121db94a02 | ||
---|---|---|
.. | ||
assets | ||
config | ||
src/carla_ros_bridge | ||
test | ||
CMakeLists.txt | ||
Readme.md | ||
client.launch | ||
client_with_rviz.launch | ||
package.xml | ||
setup.py |
Readme.md
Ros bridge for Carla simulator
This ros package aims at providing a simple ros bridge for carla simulator.
Features
- Cameras (depth, segmentation, rgb) support
- Add camera matrix
- Lidar sensor support
- Transform publications
- Manual control using ackermann msg
- Autopilot mode using rosparam
- Rosbag in the bridge (in order to avoid rosbag recoard -a small time errors)
- Handle ros dependencies
- Marker/bounding box messages for cars/pedestrian
- Add traffic light support
- Support dynamic change (restarting simulation using a topic/rosparam)
Setup
Create a catkin workspace and install carla_ros_bridge package
Create the catkin workspace:
mkdir -p ~/ros/catkin_ws_for_carla/src
cd ~/ros/catkin_ws_for_carla
source /opt/ros/kinetic/setup.bash
catkin_make
source ~/ros/catkin_ws_for_carla/devel/setup.bash
For more information about configuring a ros environment see http://wiki.ros.org/ROS/Tutorials/InstallingandConfiguringROSEnvironment
Install carla python client in your workspace
cd carla/PythonClient
pip2 install -e . --user --upgrade
Check the installation is successfull by trying to import carla from python:
python -c 'import carla;print("Success")'
You should see the Success message without any errors.
Install recent protobuf version [optional]
sudo apt-get remove python-protobuf
sudo pip2 install --upgrade protobuf
Add the carla_ros_bridge in the catkin workspace
Run the following command after replacing [PATH_TO_CARLA] with the actual path to carla directory on your machine:
ln -s [PATH_TO_CARLA]/carla_ros_bridge/ ~/ros/catkin_ws_for_carla/src/
source ~/ros/catkin_ws_for_carla/devel/setup.bash
rosdep update
rosdep install --from-paths ~/ros/catkin_ws_for_carla
cd ~/ros/catkin_ws_for_carla
catkin_make
source ~/ros/catkin_ws_for_carla/devel/setup.bash
Test your installation
If you use the builded binary (0.8.2):
./CarlaUE4 -carla-server -windowed -ResX=320 -ResY=240
Wait for the message:
Waiting for the client to connect...
Then run the tests
rostest carla_ros_bridge ros_bridge_client.test
you should see:
[carla_ros_bridge.rosunit-testTopics/test_publish][passed]
SUMMARY
* RESULT: SUCCESS
Start the ros bridge
First run the simulator (see carla documentation: http://carla.readthedocs.io/en/latest/)
./CarlaUE4 -carla-server -windowed -ResX=320 -ResY=240
Wait for the message:
Waiting for the client to connect...
Then start the ros bridge:
source ~/ros/catkin_ws_for_carla/devel/setup.bash
roslaunch carla_ros_bridge client.launch
To start the ros bridge with rviz use:
roslaunch carla_ros_bridge client_with_rviz.launch
You can setup the wanted camera/sensors in config/settings.yaml.
Autopilot control
To enable autopilot control set the ros param carla_autopilot to True
rosparam set carla_autopilot True
Manual control
To enable manual control set the ros param carla_autopilot to False
rosparam set carla_autopilot False
Then you can send command to the car using the /ackermann_cmd topic.
Example of forward movements, speed in in meters/sec.
rostopic pub /ackermann_cmd ackermann_msgs/AckermannDrive "{steering_angle: 0.0, steering_angle_velocity: 0.0, speed: 10, acceleration: 0.0,
jerk: 0.0}" -r 10
Example of forward with steering
rostopic pub /ackermann_cmd ackermann_msgs/AckermannDrive "{steering_angle: 5.41, steering_angle_velocity: 0.0, speed: 10, acceleration: 0.0,
jerk: 0.0}" -r 10
Warning: the steering_angle is the driving angle (in radians) not the wheel angle, for now max wheel is set to 500 degrees.
Example for backward :
rostopic pub /ackermann_cmd ackermann_msgs/AckermannDrive "{steering_angle: 0, steering_angle_velocity: 0.0, speed: -10, acceleration: 0.0,
jerk: 0.0}" -r 10
ROSBAG recording
The carla_ros_bridge could also be used to record all published topics into a rosbag:
roslaunch carla_ros_bridge client_with_rviz.launch rosbag_fname:=/tmp/save_session.bag
This command will create a rosbag /tmp/save_session.bag
You can of course also use rosbag record to do the same, but using the ros_bridge to do the recording you have the guarentee that all the message are saved without small desynchronization that could occurs when using rosbag record in an other process.