I am trying to synchronize the robot simulation on Isaac Sim and the real robot.
The robot is powered by a Jetson Nano board (ubuntu 18.04 and ROS melodic).
I have created the Action-graph as below to control the robot to move forwards and backwards by pressing the keyboard. The simulation on Isaac-Sim works but the message couldn’t reach the ROS in the robot.
The rostopic cmd_vel was on.
I have inserted the ROS_MASTER_URL and ROS_IP to the isaac-sim.sh file.
On the other hand I can send the message to ROS from a custom mobile apps by the ROS bridge.
Could you tell me what might be the possible problems that the robot cannot receive signal from Isaac-Sim? Thanks
Have you also configured the
ROS_HOSTNAME) in the robot?
Btw, I think it is not necessary to modify the Isaac Sim startup script.
As long as there is a
roscore running in some other terminal on the same workstation/container it is enough.
No I did not configure the ROS_MASTER_URI and ROS_IP on the robot side.
ROS was not installed on the workstation at that time so rosrun was not running.
As my workstation OS is ubuntu 22.04 thus I installed ROS2 and tried to connect to robot through ros1_bridge but somehow, I was not able to launch the ros1_bridge.
Should I downgrade the workstation to Ubuntu 20.04 and install ROS1 noetic to connect to ROS1 melodic on the robot or install ROS2 on the robot and use ros2_bridge to receive message from Isaac-sim?
Also, do anyone can share some samples of Action graphs that show how to publish message that make robot move?
Thanks in advance!
A possible solution in this scenario could be to run a ROS docker container on the workstation alongside Isaac Sim.
Note: It should work, although I haven’t tested it because I don’t have Ubuntu 22.XX installed.
Example (change the
WORKSTATION_IP by the workstation IP address):
# on the workstation
docker pull ros:noetic-ros-core-focal
docker run --entrypoint bash -it --network=host ros:noetic-ros-core-focal
# inside the container
# do it once (add ROS environment variables to .bashrc) and source the .bashrc
echo export ROS_MASTER_URI=http://WORKSTATION_IP:11311/ >> ~/.bashrc
echo export ROS_IP=WORKSTATION_IP >> ~/.bashrc
# launch roscore
Also, configure the
ROS_IP in the terminal running Isaac Sim (I retract my previous comment) and in the robot (use the robot IP address for the
ROS_IP in the robot computer) as well