ROS2
← Older revision
Revision as of 23:50, 7 December 2018
(25 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:+<font color='green'>'''Notes:'''
* Controlling and initializing of multi-camera systems is already implemented using PHP API (autocampars.php), Python and lighttpd. * 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 simplify/standardize the above.
Line 33:
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 47:
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 74:
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 94:
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'>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
← Older revision
Revision as of 23:50, 7 December 2018
(26 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:+<font color='green'>'''Notes:'''
* Controlling and initializing of multi-camera systems is already implemented using PHP API (autocampars.php), Python and lighttpd. * 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 simplify/standardize the above.
Line 33:
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 47:
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 74:
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 94:
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
← 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> Oleg