Error when execute 'ros2 topic echo /hello_ros2 ros1_msgs/MyMsg'
The ros1_msgs/MyMsg is my custom message type, The package directory path is ~/ros1_install/src/ros1_msgs. So I open a terminal, then source the relevant package path to environment by this order:
ubuntu@cscsh:~$ ros2 topic echo /hello_ros2 ros1_msgs/MyMsg
ros2: command not found
ubuntu@cscsh:~$ source /opt/ros/melodic/setup.bash
ubuntu@cscsh:~$ source ~/ros1_install/devel/local_setup.bash(the install path of my custom message type package)
ubuntu@cscsh:~$ source /opt/ros/dashing/setup.bash
ubuntu@cscsh:~$ source ~/ros2_ws/install/local_setup.bash(the source code path of my ros2)
ROS_DISTRO was set to 'melodic' before. Please make sure that the environment does not mix paths from different distributions.
Then i execute the command:
dbt@cscsh-dubingtao:~$ ros2 topic echo /hello_ros2 ros1_msgs/MyMsg
Traceback (most recent call last):
File "/home/dbt/ros2_ws/install/ros2cli/bin/ros2", line 11, in <module>
load_entry_point('ros2cli==0.7.0', 'console_scripts', 'ros2')()
File "/home/dbt/ros2_ws/install/ros2cli/lib/python3.6/site-packages/ros2cli/cli.py", line 69, in main
rc = extension.main(parser=parser, args=args)
File "/home/dbt/ros2_ws/install/ros2topic/lib/python3.6/site-packages/ros2topic/command/topic.py", line 43, in main
return extension.main(args=args)
File "/home/dbt/ros2_ws/install/ros2topic/lib/python3.6/site-packages/ros2topic/verb/echo.py", line 69, in main
return main(args)
File "/home/dbt/ros2_ws/install/ros2topic/lib/python3.6/site-packages/ros2topic/verb/echo.py", line 79, in main
node.node, args.topic_name, args.message_type, callback)
File "/home/dbt/ros2_ws/install/ros2topic/lib/python3.6/site-packages/ros2topic/verb/echo.py", line 109, in subscriber
msg_module, topic_name, callback, qos_profile_sensor_data)
File "/home/dbt/ros2_ws/install/rclpy/lib/python3.6/site-packages/rclpy/node.py", line 1126, in create_subscription
check_for_type_support(msg_type)
File "/home/dbt/ros2_ws/install/rclpy/lib/python3.6/site-packages/rclpy/type_support.py", line 20, in check_for_type_support
ts = msg_type.__class__._TYPE_SUPPORT
AttributeError: type object 'type' has no attribute '_TYPE_SUPPORT' This might be a ROS 1 message type but it should be a ROS 2 message type. Make sure to source your ROS 2 workspace after your ROS 1 workspace.
If i use the builtin message type, as i execute this command:
ros2 topic echo /hello_ros2 std_msgs/String
It work normally. so i check the PATH environment:
ubuntu@cscsh:~$ env | grep PYTHONPATH
/home/dbt/ros2_ws/install/ament_cppcheck/lib/python3.6/site-packages:/home/dbt/ros2_ws/install/ament_clang_tidy/lib/python3.6/site-packages:/home/dbt/ros2_ws/install/ament_clang_format/lib/python3.6/site-packages:/opt/ros/dashing/lib/python3.6/site-packages:/home/dbt/ros1_install/devel/lib/python2.7/dist-packages:/opt/ros/melodic/lib/python2.7/dist-packages
The output is not just like the above, I only showed a part, you can see that ros2 uses python3.6, ros1 uses 2.7+, I think the problem maybe related to the Python version inconsistency?
Does anyone know the reason of the error message? Appreciate.