carla-simulator/ros-bridge

To run Carla-ros-bridge with ROS Galactic_Some error fix ideas

youxiho1 opened this issue · 1 comments

Carla ros bridge can run very smoothly with ROS foxy. However, once you upgrade your ROS2 version to Galactic, you might encounter lots of problems.
Here is a tutorial about how to fix bugs when you can't run carla-ros-bridge with ROS Galactic
And I hope Carla-Ros-Bridge can fix these issues....

Environment:
Ubuntu 20.04+ROS2 Galactic

Error 1:

When I execute "colcon build", it happens to me that pcl_recorder failed to build
(Although it can build successfully when I use ros2 foxy, I encountered into this problem too when I build with ros2 galactic)

As mentioned in this issue ( ##621), it seems that it's caused by a change brought into this repository recently.
Once you are in this situation, you can go to /carla-ros-bridge/src/ros-bridge/pcl_recorder/src/PclRecorderROS2.cpp Line 30 and revise the code like this:

//problem code:
sub_opt.callback_group = this->create_callback_group(rclcpp::callback_group::CallbackGroupType::MutuallyExclusive);

//correct code:
sub_opt.callback_group = this->create_callback_group(rclcpp::CallbackGroupType::MutuallyExclusive);`

Error 2:

When I ran carla-ros-bridge, it reports a "ModuleNotFoundError: No module named 'derived_object_msgs'"
As issue ( ##627) discussed, there isn't a astuff_sensor_msgs package for ROS Galactic
But we can add the msgs by ourselves LOL

We just need to go to astuff_sensor_msgs, and clone the repository, then move the derived_object_msgs into the directory /carla-ros-bridge/src/

Error 3:

After I fixed Error2, another error occured:
rclpy.exceptions.ParameterAlreadyDeclaredException: ('Parameter(s) already declared', ['use_sim_time'])

There is also an issue about this problem: #619

You can edit the file /opt/ros/galactic/lib/python3.8/site-packages/rclpy/node.py
All you need to do is revising the part of the node.py that changed in node.py back to the old version~~

ros2/rclpy@8daacdd

Error 4:

[carla_ackermann_control_node-1] from simple_pid import PID # pylint: disable=import-error,wrong-import-order

[carla_ackermann_control_node-1] ModuleNotFoundError: No module named 'simple_pid'

This error is quite easy to handle, we just need to

pip3 install simple-pid

Some dependencies you could installed before installing Carla-Ros-Bridge

Besides, when I try to build the ros-bridge, it also didn't work due to dependencies missing. In summary, I installed these dependencies:

sudo apt-get install openni2-utils
sudo apt-get install libpcap-dev
sudo apt install pcl-tools
sudo apt install python3-colcon-common-extensions
sudo apt install python3-numpy
pip3 install opencv-python

I have a general question concerning the setup of CARLA, CARLA-ROS-Bridge, and Autoware.
I am running Ubunut 20.04, Autoware is running in a docker container with ROS2 galactic, CARLA is running in a separate docker container. Now my question is can I run the CARLA-ROS-Bridge in a third container with ROS foxy and let the containers communicate? Or alternatively could I install the CARLA-ROS-Bridge in the same container as Autoware with ROS galactic?
My goal would be to have everything in containers so I don't need ROS installed on the host machine. How would I do that?
Thank you!