ROS2
← Older revision
Revision as of 23:50, 7 December 2018
(27 intermediate revisions by the same user not shown)Line 3:
Line 3:
==<font color='blue'>Goals</font>== ==<font color='blue'>Goals</font>==
+<font color='green'>'''Notes:'''
+* Controlling and initializing of multi-camera systems is already implemented using PHP API (autocampars.php), Python and lighttpd.
+* Using ROS2 is intended to simplify/standardize the above.
+* Using ROS2 is intended to make cameras compatible with other hardware supported by ROS1/2.
+</font>
+
Having ROS2 cross-compiled and installed on each camera: Having ROS2 cross-compiled and installed on each camera:
* '''Initialize cameras in a pre-defined multi-camera system''' - sync and sequence critical init * '''Initialize cameras in a pre-defined multi-camera system''' - sync and sequence critical init
Line 27:
Line 33:
* For Embedded Linux (but not Ubuntu Distro) use [https://github.com/bmwcarit/meta-ros.git meta-ros.git]. What about <font color='red'>[https://github.com/erlerobot/meta-ros2 meta-ros2]</font>? * For Embedded Linux (but not Ubuntu Distro) use [https://github.com/bmwcarit/meta-ros.git meta-ros.git]. What about <font color='red'>[https://github.com/erlerobot/meta-ros2 meta-ros2]</font>?
<font color='green'>'''TODO:''' Include [https://github.com/bmwcarit/meta-ros.git meta-ros.git] in [https://git.elphel.com/Elphel/elphel393 elphel393] build system.</font> <font color='green'>'''TODO:''' Include [https://github.com/bmwcarit/meta-ros.git meta-ros.git] in [https://git.elphel.com/Elphel/elphel393 elphel393] build system.</font>
+====Include meta-ros to elphel393====
+* Add path to bblayers.conf
+* Add to "IMAGE_INSTALL_append" of core-image-elphel393.bb:
+ <font size='2'>packagegroup-ros2-world \</font>
===Workflow=== ===Workflow===
+'''Notes:'''
+* ROS2 for python populates '''/usr/lib/python3.5/site-packages/''' so python scripts can live anywhere.
+* For command line apps, like ''ros2 ...'', if AMENT_PREFIX_PATH is not set then:
+ <font size='1' color='red'>'''OSError: Environment variable 'AMENT_PREFIX_PATH' is not set or empty'''</font>
+* Useful examples (command line):
+ <font size='2'>export AMENT_PREFIX_PATH=/usr</font>
+
+ <font size='2'>ros2 pkg list
+ ros2 node list
+ ros2 srv list
+ ros2 srv show std_srvs/Trigger
+ ros2 msg list
+ ros2 msg show std_msgs/String</font>
+===Demos===
+====talker-listener cpp====
+ <font size='2'>''# terminal 1:''
+ export AMENT_PREFIX_PATH=/usr
+ ros2 run demo_nodes_cpp talker
+
+ ''# terminal 2:''
+ export AMENT_PREFIX_PATH=/usr
+ ros2 run demo_nodes_cpp listener</font>
==<font color='blue'>ROS2 on PC</font>== ==<font color='blue'>ROS2 on PC</font>==
Line 41:
Line 73:
* ROS2 will get installed to '''/opt/ros/<name>''', <name> = ardent, bouncy. * ROS2 will get installed to '''/opt/ros/<name>''', <name> = ardent, bouncy.
* Terminal setup: * Terminal setup:
− source /opt/ros/bouncy/setup.bash+ <font size='2'>''source /opt/ros/bouncy/setup.bash''
or or
− source /opt/ros/bouncy/local_setup.bash+ ''source /opt/ros/bouncy/local_setup.bash''</font>
* Create a workspace * Create a workspace
Line 68:
Line 100:
* [https://discourse.ros.org/t/suggestions-for-std-srvs/1079/16 STD-SRVS '''discussion'''] & [https://github.com/ros2/examples/issues/4 ROS2 examples(?)] * [https://discourse.ros.org/t/suggestions-for-std-srvs/1079/16 STD-SRVS '''discussion'''] & [https://github.com/ros2/examples/issues/4 ROS2 examples(?)]
* [https://discourse.ros.org/search?q=meta-ros%20order%3Alatest About meta-ros] * [https://discourse.ros.org/search?q=meta-ros%20order%3Alatest About meta-ros]
−
−===Docker===
− docker pull osrf/ros2:bouncy-desktop
− docker run -i -t osrf/ros2:bouncy-desktop
− ...no network, no colcon, no ament...
−
−==<font color='blue'>ROS2 on Zynq</font>==
−Cross-compiled and installed in Yocto
−
−===Other links===
* [http://design.ros2.org/articles/ros_on_dds.html ROS on DDS] * [http://design.ros2.org/articles/ros_on_dds.html ROS on DDS]
<font size='2'>... <font size='2'>...
Line 88:
Line 110:
* [https://wiki.ros.org/Services Request-Response is done with '''service''']. Format [https://wiki.ros.org/srv srv] * [https://wiki.ros.org/Services Request-Response is done with '''service''']. Format [https://wiki.ros.org/srv srv]
−===Build===+===Docker===
−* Add path to bblayers.conf+ docker pull osrf/ros2:bouncy-desktop
−* Add to "IMAGE_INSTALL_append" of core-image-elphel393.bb:+ docker run -i -t osrf/ros2:bouncy-desktop
− packagegroup-ros2-world \+ ...no network, no colcon, no ament...
−
−<font color='green'>'''Notes:'''
−* -</font>
−
−===Work===
−
−====Available packages====
−* SSH session:
− root@elphel393:~# export AMENT_PREFIX_PATH=/usr
− root@elphel393:~# ros2 pkg list
− <font size='1'>builtin_interfaces
− demo_nodes_cpp
− example_interfaces
− geometry_msgs
− rcl
− rcl_interfaces
− rclcpp
− rclpy
− rcutils
− rmw
− rmw_fastrtps_cpp
− rosidl_cmake
− rosidl_generator_c
− rosidl_generator_cpp
− rosidl_parser
− rosidl_typesupport_interface
− rosidl_typesupport_introspection_c
− rosidl_typesupport_introspection_cpp
− sensor_msgs</font>
−
−====Test Talker and Listener====
−* SSH session 1:
− root@elphel393:~# export AMENT_PREFIX_PATH=/usr
− root@elphel393:~# ros2 run demo_nodes_cpp talker
−* SSH session 2:
− root@elphel393:~# export AMENT_PREFIX_PATH=/usr
− root@elphel393:~# ros2 run demo_nodes_cpp listener
−
−<font color='green'>'''Notes:'''</font>
−* It populates '''/usr/lib/python3.5/site-packages/''' so python scripts can be pretty much standalone
−* <font color='green'>If AMENT_PREFIX_PATH is not set (only for command line apps) then:</font>
− <font size='1'>Traceback (most recent call last):
− File "/usr/bin/ros2", line 11, in <module>
− load_entry_point('ros2cli==0.4.0', 'console_scripts', 'ros2')()
− File "/usr/lib/python3.5/site-packages/ros2cli/cli.py", line 64, in main
− rc = extension.main(parser=parser, args=args)
− File "/usr/lib/python3.5/site-packages/ros2run/command/run.py", line 59, in main
− executable_name=args.executable_name)
− File "/usr/lib/python3.5/site-packages/ros2run/api/__init__.py", line 30, in get_executable_path
− paths = get_executable_paths(package_name=package_name)
− File "/usr/lib/python3.5/site-packages/ros2pkg/api/__init__.py", line 41, in get_executable_paths
− prefix_path = get_prefix_path(package_name)
− File "/usr/lib/python3.5/site-packages/ros2pkg/api/__init__.py", line 34, in get_prefix_path
− prefix_path = get_package_prefix(package_name)
− File "/usr/lib/python3.5/site-packages/ament_index_python/packages.py", line 49, in get_package_prefix
− content, package_prefix = get_resource('packages', package_name)
− File "/usr/lib/python3.5/site-packages/ament_index_python/resources.py", line 37, in get_resource
− for path in get_search_paths():
− File "/usr/lib/python3.5/site-packages/ament_index_python/search_paths.py", line 30, in get_search_paths
− "Environment variable '{}' is not set or empty".format(AMENT_PREFIX_PATH_ENV_VAR))
− <font color='red'>'''OSError: Environment variable 'AMENT_PREFIX_PATH' is not set or empty'''</font></font>
−
−==<font color='blue'>ROS2 on PC</font>==
−* [https://index.ros.org/doc/ros2/Linux-Install-Debians/ Linux-Install-Debians]
−<font color='green'>'''Notes:'''
−* '''apt install ros-bouncy-desktop''' available in 18.04, n/a in 16.04
−* '''apt install ros-ardent-desktop''' available in 16.04</font>
==<font color='blue'>ROS1</font>== ==<font color='blue'>ROS1</font>==
−
===Build=== ===Build===
<font color='red'>'''Won't build'''</font> <font color='red'>'''Won't build'''</font>
Oleg
ROS2
Show changes
Oleg
ROS2
Workflow
Show changes OlegROS2
Interfaces
← Older revision Revision as of 22:41, 7 December 2018 (20 intermediate revisions by the same user not shown)Line 1: Line 1: −==<font color='blue'>GitHub</font>==+==<font color='blue'>About</font>== −https://github.com/bmwcarit/meta-ros.git+Use ROS2 in Elphel single or multi-camera systems. The cameras are 10393 system boards based on Xilinx Zynq, ARM. −<font color='red'>https://github.com/erlerobot/meta-ros2</font> ?+==<font color='blue'>Goals</font>== +Having ROS2 cross-compiled and installed on each camera: +* '''Initialize cameras in a pre-defined multi-camera system''' - sync and sequence critical init +* '''Control multiple cameras from any camera of the system''' - parameters, recording +* '''Control multiple cameras from a PC''' (with ROS2 for PC installed). +* '''Control multiple cameras from a network device''' (w/o ROS2 installed, but with a browser) - by accessing a web server running on a camera interfaced with ROS2 of the camera. Can use nodejs or just lighttpd+php. +==<font color='blue'>Status</font>== +Development −==<font color='blue'>ROS2 General Notes</font>==+==<font color='blue'>Interfaces</font>== −===Notes===+ROS2 nodes communicate over: −* SROS is Secure ROS or something+* '''1 GigE LAN''' or (possibly) '''wifi''' (camera1-camera2..N, pc-camera1..N, pc1-pc2..M) −===Useful links===+* within a single device −* [http://docs.erlerobotics.com/robot_operating_system/ros2/tutorials/tutorial_10 Tutorials ErleRobotics]+<font color='green'>'''Notes:''' −* [https://github.com/intel/ros2_intel_realsense Intel RealSense]+* image sensors, IMS (or GPS & IMU), any other sensors are attached to cameras via a custom interface or USB, with appropriate driver support. −* [https://index.ros.org/doc/ros2/Ament-Tutorial/ Ament tutorial] - will not work for PC because it's outdated, will work in Yocto+* normally cameras in the system are synced with a custom trigger cable - this is setup over network −* [https://index.ros.org/doc/ros2/Colcon-Tutorial/ Colcon tutorial] - this one worked for PC+* any device attached to PC? −* [https://discourse.ros.org/t/suggestions-for-std-srvs/1079/16 STD-SRVS '''discussion'''] & [https://github.com/ros2/examples/issues/4 ROS2 examples(?)]+</font> −* [https://discourse.ros.org/search?q=meta-ros%20order%3Alatest About meta-ros]+ +==<font color='blue'>ROS2 on Zynq</font>== + +===Installation=== +* For Embedded Linux (but not Ubuntu Distro) use [https://github.com/bmwcarit/meta-ros.git meta-ros.git]. What about <font color='red'>[https://github.com/erlerobot/meta-ros2 meta-ros2]</font>? +<font color='green'>'''TODO:''' Include [https://github.com/bmwcarit/meta-ros.git meta-ros.git] in [https://git.elphel.com/Elphel/elphel393 elphel393] build system.</font> + +===Workflow=== + + +==<font color='blue'>ROS2 on PC</font>== +===Installation=== +* Google and follow the [https://index.ros.org/doc/ros2/ general instructions]. +<font color='green'>'''Notes:''' +* '''apt install ros-bouncy-desktop''' available in 18.04, <font color='red'>n/a in 16.04</font> +* '''apt install ros-ardent-desktop''' available in 16.04</font> −===PC workflow===+===Workflow=== −* Install ROS2 - will get installed to '''/opt/ros/<name>'''+* ROS2 will get installed to '''/opt/ros/<name>''', <name> = ardent, bouncy. * Terminal setup: * Terminal setup: source /opt/ros/bouncy/setup.bash source /opt/ros/bouncy/setup.bash Line 36: Line 58: * [https://erlerobotics.gitbooks.io/erle-robotics-python-gitbook-free/udp_and_tcp/a_simple_tcp_client_and_server.html Good book about UDP?] * [https://erlerobotics.gitbooks.io/erle-robotics-python-gitbook-free/udp_and_tcp/a_simple_tcp_client_and_server.html Good book about UDP?] −===Embedded workflow===+==<font color='blue'>ROS2 General Notes</font>== −* Use meta-ros in yocto+===Notes=== −* Go for ROS2 recipes. Use as examples.+* SROS is Secure ROS or something −* The build system in Yocto is '''ament''' - which is one generation older then '''colcon'''+===Useful links=== −* Here there's no workspace - packages do get installed somewhere+* [http://docs.erlerobotics.com/robot_operating_system/ros2/tutorials/tutorial_10 Tutorials ErleRobotics] −* Need to +* [https://github.com/intel/ros2_intel_realsense Intel RealSense] − export AMENT_PREFIX_PATH=/usr+* [https://index.ros.org/doc/ros2/Ament-Tutorial/ Ament tutorial] - will not work for PC because it's outdated, will work in Yocto −* Python scripts can live anywhere - because ROS2 populates /usr/lib/...+* [https://index.ros.org/doc/ros2/Colcon-Tutorial/ Colcon tutorial] - this one worked for PC −* Service formats are too few - for a simple "Request string - Response string" server need to add new srv.+* [https://discourse.ros.org/t/suggestions-for-std-srvs/1079/16 STD-SRVS '''discussion'''] & [https://github.com/ros2/examples/issues/4 ROS2 examples(?)] +* [https://discourse.ros.org/search?q=meta-ros%20order%3Alatest About meta-ros] ===Docker=== ===Docker=== OlegROS2
Communication interfaces
← Older revision Revision as of 21:33, 7 December 2018 (3 intermediate revisions by the same user not shown)Line 1: Line 1: +==<font color='blue'>About</font>== +Use ROS2 in Elphel single or multi-camera systems. The cameras are 10393 system boards based on Xilinx Zynq, ARM. + +==<font color='blue'>Goals</font>== +Having ROS2 cross-compiled and installed on each camera: +* '''Initialize cameras in a pre-defined multi-camera system''' - sync and sequence critical init +* '''Control multiple cameras from any camera of the system''' - parameters, recording +* '''Control multiple cameras from a PC''' (with ROS2 for PC installed). +* '''Control multiple cameras from a network device''' (w/o ROS2 installed, but with a browser) - by accessing a web server running on a camera interfaced with ROS2 of the camera. Can use nodejs or just lighttpd+php. + +==<font color='blue'>Communication interfaces</font>== +ROS2 nodes communicate over: +* '''1 GigE LAN''' or (possibly) '''wifi''' (camera1-camera2,pc-camera,pc1-pc2) +* within a single device +Notes: +* image sensors, IMS (or GPS & IMU), any other sensors are attached to cameras via a custom interface or USB, with appropriate driver support. +* normally cameras in the system are synced with a custom trigger cable - this is setup over network +* any device attached to PC? + ==<font color='blue'>GitHub</font>== ==<font color='blue'>GitHub</font>== https://github.com/bmwcarit/meta-ros.git https://github.com/bmwcarit/meta-ros.git OlegMeta-ros testing
Oleg moved page Meta-ros testing to ROS2 better name
OlegMeta-ros testing
Useful links
Show changes OlegMeta-ros testing
ROS2 General Notes
Show changes OlegMeta-ros testing
ROS2 General Notes
Show changes OlegMeta-ros testing
Docker
Show changes OlegMeta-ros testing
Other links
Show changes OlegMeta-ros testing
ROS2
Show changes OlegMeta-ros testing
GitHub
Show changes OlegMeta-ros testing
ROS1
Show changes OlegMeta-ros testing
ROS1
← Older revision Revision as of 22:38, 4 December 2018 (19 intermediate revisions by the same user not shown)Line 1: Line 1: −==GitHub==+==<font color='blue'>GitHub</font>== https://github.com/bmwcarit/meta-ros.git https://github.com/bmwcarit/meta-ros.git +==<font color='blue'>ROS2</font>== −==ROS1==+===Build=== −* Won't build − −==ROS2== * Add path to bblayers.conf * Add path to bblayers.conf * Add to "IMAGE_INSTALL_append" of core-image-elphel393.bb: * Add to "IMAGE_INSTALL_append" of core-image-elphel393.bb: Line 13: Line 11: ros2msg \ ros2msg \ ros2run \ ros2run \ + +<font color='green'>'''Notes:''' +* Is this a required minimum? +* '''ROS_USE_PYTHON3 = "yes"''' no effect? It already uses python3?</font> +===Work=== +====1. Test Talker and Listener==== +* SSH session 1: + root@elphel393:~# export AMENT_PREFIX_PATH=/usr + root@elphel393:~# ros2 run demo_nodes_cpp talker +* SSH session 2: + root@elphel393:~# export AMENT_PREFIX_PATH=/usr + root@elphel393:~# ros2 run demo_nodes_cpp listener + +<font color='green'>'''Notes:'''</font> +* <font color='green'>If AMENT_PREFIX_PATH is not set then:</font> + <font size='1'>Traceback (most recent call last): + File "/usr/bin/ros2", line 11, in <module> + load_entry_point('ros2cli==0.4.0', 'console_scripts', 'ros2')() + File "/usr/lib/python3.5/site-packages/ros2cli/cli.py", line 64, in main + rc = extension.main(parser=parser, args=args) + File "/usr/lib/python3.5/site-packages/ros2run/command/run.py", line 59, in main + executable_name=args.executable_name) + File "/usr/lib/python3.5/site-packages/ros2run/api/__init__.py", line 30, in get_executable_path + paths = get_executable_paths(package_name=package_name) + File "/usr/lib/python3.5/site-packages/ros2pkg/api/__init__.py", line 41, in get_executable_paths + prefix_path = get_prefix_path(package_name) + File "/usr/lib/python3.5/site-packages/ros2pkg/api/__init__.py", line 34, in get_prefix_path + prefix_path = get_package_prefix(package_name) + File "/usr/lib/python3.5/site-packages/ament_index_python/packages.py", line 49, in get_package_prefix + content, package_prefix = get_resource('packages', package_name) + File "/usr/lib/python3.5/site-packages/ament_index_python/resources.py", line 37, in get_resource + for path in get_search_paths(): + File "/usr/lib/python3.5/site-packages/ament_index_python/search_paths.py", line 30, in get_search_paths + "Environment variable '{}' is not set or empty".format(AMENT_PREFIX_PATH_ENV_VAR)) + <font color='red'>'''OSError: Environment variable 'AMENT_PREFIX_PATH' is not set or empty'''</font></font> + +====2. Available packages==== +* SSH session: + root@elphel393:~# export AMENT_PREFIX_PATH=/usr + root@elphel393:~# ros2 pkg list + <font size='1'>builtin_interfaces + demo_nodes_cpp + example_interfaces + geometry_msgs + rcl + rcl_interfaces + rclcpp + rclpy + rcutils + rmw + rmw_fastrtps_cpp + rosidl_cmake + rosidl_generator_c + rosidl_generator_cpp + rosidl_parser + rosidl_typesupport_interface + rosidl_typesupport_introspection_c + rosidl_typesupport_introspection_cpp + sensor_msgs</font> + +==<font color='blue'>ROS1</font>== + +===Build=== +<font color='red'>'''Won't build'''</font> + <font size='1'>Build Configuration: + BB_VERSION = "1.37.0" + BUILD_SYS = "x86_64-linux" + NATIVELSBSTRING = "universal" + TARGET_SYS = "arm-poky-linux-gnueabi" + MACHINE = "elphel393" + DISTRO = "poky" + DISTRO_VERSION = "2.4+snapshot-20181204" + TUNE_FEATURES = "arm armv7a vfp neon cortexa9" + TARGET_FPU = "softfp" + meta + meta-poky + meta-yocto-bsp = "HEAD:72867393fe2004ab9f0ee23eb09a975c82938b9e" + meta-ezynq = "rocko:046de13c06cc248b725cb7b9928f35d4a369b50f" + meta-elphel393 = "rocko:0cea9b9b8776f0fe725316f1be1501396c95feb4" + meta-ros = "HEAD:72068b17e4192b51e09c8dc633805a35edac8701" + meta-xilinx-bsp = "HEAD:a18947c20dba2c0c38db8bde1ad4684995df4bbd" + meta-oe + meta-python + meta-networking + meta-webserver = "HEAD:34aa4c3202b427f59f843dc43a4e1afda4f81d13"</font> + +* Error 1: +** ROS_USE_PYTHON3 = "yes" +** IMAGE_INSTALL += "roslaunch" + + <font size='1'>NOTE: Resolving any missing task queue dependencies + ERROR: Nothing RPROVIDES 'python3-pycrypto' (but /home/oleg/GIT/elphel393_rocko_clean_install/meta/meta-ros/recipes-devtools/python/python3-paramiko_1.16.0.bb RDEPENDS on or otherwise requires it) + NOTE: Runtime target 'python3-pycrypto' is unbuildable, removing... + Missing or unbuildable dependency chain was: ['python3-pycrypto'] + NOTE: Runtime target 'python3-paramiko' is unbuildable, removing... + Missing or unbuildable dependency chain was: ['python3-paramiko', 'python3-pycrypto'] + NOTE: Runtime target 'roslaunch' is unbuildable, removing... + Missing or unbuildable dependency chain was: ['roslaunch', 'python3-paramiko', 'python3-pycrypto'] + ERROR: Required build target 'core-image-elphel393' has no buildable providers. + Missing or unbuildable dependency chain was: ['core-image-elphel393', 'roslaunch', 'python3-paramiko', 'python3-pycrypto']</font> + +* Successful build: +** IMAGE_INSTALL += "roslaunch" + + <font size='1'>NOTE: Resolving any missing task queue dependencies + ERROR: Nothing RPROVIDES 'python3-pycrypto' (but /home/oleg/GIT/elphel393_rocko_clean_install/meta/meta-ros/recipes-devtools/python/python3-paramiko_1.16.0.bb RDEPENDS on or otherwise requires it) + NOTE: Runtime target 'python3-pycrypto' is unbuildable, removing... + Missing or unbuildable dependency chain was: ['python3-pycrypto'] + NOTE: Runtime target 'python3-paramiko' is unbuildable, removing... + Missing or unbuildable dependency chain was: ['python3-paramiko', 'python3-pycrypto'] + NOTE: Runtime target 'roslaunch' is unbuildable, removing... + Missing or unbuildable dependency chain was: ['roslaunch', 'python3-paramiko', 'python3-pycrypto'] + ERROR: Required build target 'core-image-elphel393' has no buildable providers. + Missing or unbuildable dependency chain was: ['core-image-elphel393', 'roslaunch', 'python3-paramiko', 'python3-pycrypto']</font> + + +* Error 2: +** <font color='red'>Seems like '''rostopic''' causes:</font> + <font size='1'>ERROR: python-imaging-1.1.7-r5 do_package_qa: QA Issue: python-imaging: The compile log indicates that host include and/or library paths were used. + Please check the log '/home/oleg/GIT/elphel393_rocko_clean_install/poky/build/tmp/work/cortexa9-neon-poky-linux-gnueabi/python-imaging/1.1.7-r5/temp/log.do_compile' for more information. [compile- host-path] + ERROR: python-imaging-1.1.7-r5 do_package_qa: QA run found fatal errors. Please consider fixing them. + ERROR: python-imaging-1.1.7-r5 do_package_qa: Function failed: do_package_qa + ERROR: Logfile of failure stored in: /home/oleg/GIT/elphel393_rocko_clean_install/poky/build/tmp/work/cortexa9-neon-poky-linux-gnueabi/python-imaging/1.1.7-r5/temp/log.do_package_qa.19425 + ERROR: Task (/home/oleg/GIT/elphel393_rocko_clean_install/meta/meta-openembedded/meta-python/recipes-devtools/python/python-imaging_1.1.7.bb:do_package_qa) failed with exit code '1'</font> + + potential links: + https://github.com/intel-aero/meta-intel-aero/issues/81 + https://github.com/bmwcarit/meta-ros/issues/395 + + +===Work=== +* Won't work OlegMeta-ros testing
← Older revision
Revision as of 21:40, 4 December 2018
(16 intermediate revisions by the same user not shown)Line 1:
Line 1:
−==GitHub==+==<font color='blue'>GitHub</font>==
https://github.com/bmwcarit/meta-ros.git https://github.com/bmwcarit/meta-ros.git
+==<font color='blue'>ROS2</font>==
−==ROS1==+===Build===
−* Won't build
−
−==ROS2==
* Add path to bblayers.conf * Add path to bblayers.conf
* Add to "IMAGE_INSTALL_append" of core-image-elphel393.bb: * Add to "IMAGE_INSTALL_append" of core-image-elphel393.bb:
Line 13:
Line 11:
ros2msg \ ros2msg \
ros2run \ ros2run \
+
+<font color='green'>'''Notes:'''
+* Is this a required minimum?
+* '''ROS_USE_PYTHON3 = "yes"''' no effect? It already uses python3?</font>
+===Work===
+====1. Test Talker and Listener====
+* SSH session 1:
+ root@elphel393:~# export AMENT_PREFIX_PATH=/usr
+ root@elphel393:~# ros2 run demo_nodes_cpp talker
+* SSH session 2:
+ root@elphel393:~# export AMENT_PREFIX_PATH=/usr
+ root@elphel393:~# ros2 run demo_nodes_cpp listener
+
+<font color='green'>'''Notes:'''</font>
+* <font color='green'>If AMENT_PREFIX_PATH is not set then:</font>
+ <font size='1'>Traceback (most recent call last):
+ File "/usr/bin/ros2", line 11, in <module>
+ load_entry_point('ros2cli==0.4.0', 'console_scripts', 'ros2')()
+ File "/usr/lib/python3.5/site-packages/ros2cli/cli.py", line 64, in main
+ rc = extension.main(parser=parser, args=args)
+ File "/usr/lib/python3.5/site-packages/ros2run/command/run.py", line 59, in main
+ executable_name=args.executable_name)
+ File "/usr/lib/python3.5/site-packages/ros2run/api/__init__.py", line 30, in get_executable_path
+ paths = get_executable_paths(package_name=package_name)
+ File "/usr/lib/python3.5/site-packages/ros2pkg/api/__init__.py", line 41, in get_executable_paths
+ prefix_path = get_prefix_path(package_name)
+ File "/usr/lib/python3.5/site-packages/ros2pkg/api/__init__.py", line 34, in get_prefix_path
+ prefix_path = get_package_prefix(package_name)
+ File "/usr/lib/python3.5/site-packages/ament_index_python/packages.py", line 49, in get_package_prefix
+ content, package_prefix = get_resource('packages', package_name)
+ File "/usr/lib/python3.5/site-packages/ament_index_python/resources.py", line 37, in get_resource
+ for path in get_search_paths():
+ File "/usr/lib/python3.5/site-packages/ament_index_python/search_paths.py", line 30, in get_search_paths
+ "Environment variable '{}' is not set or empty".format(AMENT_PREFIX_PATH_ENV_VAR))
+ <font color='red'>'''OSError: Environment variable 'AMENT_PREFIX_PATH' is not set or empty'''</font></font>
+
+====2. Available packages====
+* SSH session:
+ root@elphel393:~# export AMENT_PREFIX_PATH=/usr
+ root@elphel393:~# ros2 pkg list
+ <font size='1'>builtin_interfaces
+ demo_nodes_cpp
+ example_interfaces
+ geometry_msgs
+ rcl
+ rcl_interfaces
+ rclcpp
+ rclpy
+ rcutils
+ rmw
+ rmw_fastrtps_cpp
+ rosidl_cmake
+ rosidl_generator_c
+ rosidl_generator_cpp
+ rosidl_parser
+ rosidl_typesupport_interface
+ rosidl_typesupport_introspection_c
+ rosidl_typesupport_introspection_cpp
+ sensor_msgs</font>
+
+==<font color='blue'>ROS1</font>==
+
+===Build===
+<font color='red'>'''Won't build'''</font>
+ <font size='1'>Build Configuration:
+ BB_VERSION = "1.37.0"
+ BUILD_SYS = "x86_64-linux"
+ NATIVELSBSTRING = "universal"
+ TARGET_SYS = "arm-poky-linux-gnueabi"
+ MACHINE = "elphel393"
+ DISTRO = "poky"
+ DISTRO_VERSION = "2.4+snapshot-20181204"
+ TUNE_FEATURES = "arm armv7a vfp neon cortexa9"
+ TARGET_FPU = "softfp"
+ meta
+ meta-poky
+ meta-yocto-bsp = "HEAD:72867393fe2004ab9f0ee23eb09a975c82938b9e"
+ meta-ezynq = "rocko:046de13c06cc248b725cb7b9928f35d4a369b50f"
+ meta-elphel393 = "rocko:0cea9b9b8776f0fe725316f1be1501396c95feb4"
+ meta-ros = "HEAD:72068b17e4192b51e09c8dc633805a35edac8701"
+ meta-xilinx-bsp = "HEAD:a18947c20dba2c0c38db8bde1ad4684995df4bbd"
+ meta-oe
+ meta-python
+ meta-networking
+ meta-webserver = "HEAD:34aa4c3202b427f59f843dc43a4e1afda4f81d13"</font>
+
+* Error 1:
+** ROS_USE_PYTHON3 = "yes"
+** IMAGE_INSTALL += "roslaunch"
+
+ <font size='1'>NOTE: Resolving any missing task queue dependencies
+ ERROR: Nothing RPROVIDES 'python3-pycrypto' (but /home/oleg/GIT/elphel393_rocko_clean_install/meta/meta-ros/recipes-devtools/python/python3-paramiko_1.16.0.bb RDEPENDS on or otherwise requires it)
+ NOTE: Runtime target 'python3-pycrypto' is unbuildable, removing...
+ Missing or unbuildable dependency chain was: ['python3-pycrypto']
+ NOTE: Runtime target 'python3-paramiko' is unbuildable, removing...
+ Missing or unbuildable dependency chain was: ['python3-paramiko', 'python3-pycrypto']
+ NOTE: Runtime target 'roslaunch' is unbuildable, removing...
+ Missing or unbuildable dependency chain was: ['roslaunch', 'python3-paramiko', 'python3-pycrypto']
+ ERROR: Required build target 'core-image-elphel393' has no buildable providers.
+ Missing or unbuildable dependency chain was: ['core-image-elphel393', 'roslaunch', 'python3-paramiko', 'python3-pycrypto']</font>
+
+* Successful build:
+** IMAGE_INSTALL += "roslaunch"
+
+ <font size='1'>NOTE: Resolving any missing task queue dependencies
+ ERROR: Nothing RPROVIDES 'python3-pycrypto' (but /home/oleg/GIT/elphel393_rocko_clean_install/meta/meta-ros/recipes-devtools/python/python3-paramiko_1.16.0.bb RDEPENDS on or otherwise requires it)
+ NOTE: Runtime target 'python3-pycrypto' is unbuildable, removing...
+ Missing or unbuildable dependency chain was: ['python3-pycrypto']
+ NOTE: Runtime target 'python3-paramiko' is unbuildable, removing...
+ Missing or unbuildable dependency chain was: ['python3-paramiko', 'python3-pycrypto']
+ NOTE: Runtime target 'roslaunch' is unbuildable, removing...
+ Missing or unbuildable dependency chain was: ['roslaunch', 'python3-paramiko', 'python3-pycrypto']
+ ERROR: Required build target 'core-image-elphel393' has no buildable providers.
+ Missing or unbuildable dependency chain was: ['core-image-elphel393', 'roslaunch', 'python3-paramiko', 'python3-pycrypto']</font>
+
+===Work===
+* Won't work
Oleg
Meta-ros testing
ROS2
← Older revision Revision as of 21:05, 4 December 2018 (11 intermediate revisions by the same user not shown)Line 1: Line 1: −==GitHub==+==<font color='blue'>GitHub</font>== https://github.com/bmwcarit/meta-ros.git https://github.com/bmwcarit/meta-ros.git +==<font color='blue'>ROS1</font>== −==ROS1==+===Build=== * Won't build * Won't build +===Work=== +* Won't work −==ROS2==+==<font color='blue'>ROS2</font>== + +===Build=== * Add path to bblayers.conf * Add path to bblayers.conf * Add to "IMAGE_INSTALL_append" of core-image-elphel393.bb: * Add to "IMAGE_INSTALL_append" of core-image-elphel393.bb: Line 13: Line 18: ros2msg \ ros2msg \ ros2run \ ros2run \ + +'''Notes:''' +* Is this a required minimum? +* '''ROS_USE_PYTHON3 = "yes"''' results in errors? +===Work=== +====1. Test Talker and Listener==== +* SSH session 1: + root@elphel393:~# export AMENT_PREFIX_PATH=/usr + root@elphel393:~# ros2 run demo_nodes_cpp talker +* SSH session 2: + root@elphel393:~# export AMENT_PREFIX_PATH=/usr + root@elphel393:~# ros2 run demo_nodes_cpp listener + +'''Notes:''' +* If AMENT_PREFIX_PATH is not set then: + <font size='1'>Traceback (most recent call last): + File "/usr/bin/ros2", line 11, in <module> + load_entry_point('ros2cli==0.4.0', 'console_scripts', 'ros2')() + File "/usr/lib/python3.5/site-packages/ros2cli/cli.py", line 64, in main + rc = extension.main(parser=parser, args=args) + File "/usr/lib/python3.5/site-packages/ros2run/command/run.py", line 59, in main + executable_name=args.executable_name) + File "/usr/lib/python3.5/site-packages/ros2run/api/__init__.py", line 30, in get_executable_path + paths = get_executable_paths(package_name=package_name) + File "/usr/lib/python3.5/site-packages/ros2pkg/api/__init__.py", line 41, in get_executable_paths + prefix_path = get_prefix_path(package_name) + File "/usr/lib/python3.5/site-packages/ros2pkg/api/__init__.py", line 34, in get_prefix_path + prefix_path = get_package_prefix(package_name) + File "/usr/lib/python3.5/site-packages/ament_index_python/packages.py", line 49, in get_package_prefix + content, package_prefix = get_resource('packages', package_name) + File "/usr/lib/python3.5/site-packages/ament_index_python/resources.py", line 37, in get_resource + for path in get_search_paths(): + File "/usr/lib/python3.5/site-packages/ament_index_python/search_paths.py", line 30, in get_search_paths + "Environment variable '{}' is not set or empty".format(AMENT_PREFIX_PATH_ENV_VAR)) + <font color='red'>'''OSError: Environment variable 'AMENT_PREFIX_PATH' is not set or empty'''</font></font> + +====2. Available packages==== +* SSH session: + root@elphel393:~# export AMENT_PREFIX_PATH=/usr + root@elphel393:~# ros2 pkg list + <font size='1'>builtin_interfaces + demo_nodes_cpp + example_interfaces + geometry_msgs + rcl + rcl_interfaces + rclcpp + rclpy + rcutils + rmw + rmw_fastrtps_cpp + rosidl_cmake + rosidl_generator_c + rosidl_generator_cpp + rosidl_parser + rosidl_typesupport_interface + rosidl_typesupport_introspection_c + rosidl_typesupport_introspection_cpp + sensor_msgs + </font> OlegMeta-ros testing
Created page with "==GitHub== https://github.com/bmwcarit/meta-ros.git ==ROS1== * Won't build ==ROS2== * Add path to bblayers.conf * Add to "IMAGE_INSTALL_append" of core-image-elphel393.bb:..."
New page
==GitHub==https://github.com/bmwcarit/meta-ros.git
==ROS1==
* Won't build
==ROS2==
* Add path to bblayers.conf
* Add to "IMAGE_INSTALL_append" of core-image-elphel393.bb:
ros2-demo-nodes-cpp \
ros2topic \
ros2msg \
ros2run \ Oleg
Nc393-h
← Older revision
Revision as of 19:37, 3 December 2018
Line 19:
Line 19:
* To '''fixate a part around a tube''', <font color='red'>'''carefully'''</font> tighten the screws. If the part is plastic try to tighten them evenly with small steps. Start with the screws located in the middle of the part where it is stronger. When fixated there's approximately 1-1.5mm gap between the parts arms. * To '''fixate a part around a tube''', <font color='red'>'''carefully'''</font> tighten the screws. If the part is plastic try to tighten them evenly with small steps. Start with the screws located in the middle of the part where it is stronger. When fixated there's approximately 1-1.5mm gap between the parts arms.
−* By default the camera is mounted vertically (easier to ship in this configuration), see Fig.1b. To change to horizontal mount the vertical tubes, those with sensors on ends, (Fig.2) have to be rotated 90°. <font color='red'>The body (the blue one) should not be rotated around the cross tube - there's a stopper inside, so the cables might not get cut off.</font> After switching to horizontal mount - the sensors will be oriented upside down - they can be reattached but '''preferably''' change their vertical flips programatically (FLIPV) and store the settings.+* By default the camera is mounted vertically (easier to ship in this configuration), see Fig.1b. To change to horizontal mount the vertical tubes, those with sensors on ends, (Fig.2) have to be rotated 90°. <font color='red'>The body (the blue one) should not be rotated around the cross tube - there's a stopper inside, so the cables will not get cut off.</font> After switching to horizontal mount - the sensors will be oriented upside down - they can be reattached but '''preferably''' change their vertical flips programmatically (FLIPV) and store the settings.
* To rotate a sensor front end 180° = putting it upside down (This is discouraged in favor of setting everything from software - all settings can be stored/restored). Just remove all 4 screws holding it, then carefully pull it out from the plastic part, keeping in mind the cable - it's long enough but can be damaged. Rotate, then reinstall. Do not touch the screws that hold the plastic part and the tube. * To rotate a sensor front end 180° = putting it upside down (This is discouraged in favor of setting everything from software - all settings can be stored/restored). Just remove all 4 screws holding it, then carefully pull it out from the plastic part, keeping in mind the cable - it's long enough but can be damaged. Rotate, then reinstall. Do not touch the screws that hold the plastic part and the tube.
Oleg