- Clone the repo
- In VSCode, open the command palette and run
rebuild and reopen in dev container
- To verify your setup, run
run_tests.sh
-
Start the DDS agent.
MicroXRCEAgent udp4 -p 8888
-
In a new terminal window, cd into PX4-Autopilot and start the SITL.
sudo make px4_sitl gazebo-classic
-
In a new terminal window, run your roslaunch or script.
-
cd into this repo's root directory.
-
Run:
pip install -e .
- Open this project in vscode
- Install the "Dev Containers" extension
- Open the command pallete (ctrl-shift-p), then search for and execute "Dev Containers: (Re-)build and Reopen in Container"
- Congratulations, you get to skip all those tedious steps to install ROS 2 manually, and your environment is isolated from the rest of your computer
- To make downloading dependencies reproducible, add any important software installation steps to the Dockerfile in this repo.
- To use git inside the docker container, you may have to manually log in to GitHub again if the built-in credential forwarding isn't working. I recommend using the GitHub CLI to do this.
- If you want to use the simulator:
- If you want to run in headless,
cd /home/ws/PX4-Autopilot
thenHEADLESS=1 make px4_sitl gazebo-classic
- If you want it to run it in a GUI, one way is using the remote desktop environment in the dev container. Open
localhost:6080
in a web browser, then enter passwordvscode
, then use the menu in the bottom left to open a terminal,cd /home/ws/PX4-Autopilot
, then runmake px4_sitl gazebo-classic
.
- If you want to run in headless,
I copied a lot of the config from this tutorial: https://docs.ros.org/en/foxy/How-To-Guides/Setup-ROS-2-with-VSCode-and-Docker-Container.html
-
Uninstall ROS Noetic.
sudo apt-get remove ros-* sudo apt-get autoremove
Remove the installations of Noetic in /opt/ros and /mnt/c/opt/ros.
cd /opt/ros sudo rm -r noetic cd /mnt/c/opt/ros sudo rm -r noetic
Edit your ~/.bashrc and remove all ROS related commands.
-
Make sure locale has UTF-8.
locale # check for UTF-8 sudo apt update && sudo apt install locales sudo locale-gen en_US en_US.UTF-8 sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 export LANG=en_US.UTF-8 locale # verify settings
-
Set up sources.
sudo apt install software-properties-common sudo add-apt-repository universe sudo apt update && sudo apt install curl -y sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(. /etc/os-release && echo $UBUNTU_CODENAME) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null
-
Install ROS 2 packages.
sudo apt update sudo apt upgrade sudo apt install ros-foxy-desktop python3-argcomplete # full install with extra visualizer tools and tutorials (RECOMMENDED) sudo apt install ros-foxy-ros-base python3-argcomplete # only has communication libraries and command line tools sudo apt install ros-dev-tools
-
Source environment and test if it's working.
source /opt/ros/foxy/setup.bash echo 'source /opt/ros/foxy/setup.bash' >> ~/.bashrc ros2 run demo_nodes_cpp talker
In another window run:
ros2 run demo_nodes_py listener
-
Not sure what this is but PX4 says to install it.
pip install --user -U empy pyros-genmsg setuptools
- Install PX4 development environment in your directory of choice.
git clone https://github.com/PX4/PX4-Autopilot.git --recursive bash ./PX4-Autopilot/Tools/setup/ubuntu.sh cd PX4-Autopilot/ make px4_sitl
-
Clone the DDS agent library to your directory of choice.
git clone https://github.com/eProsima/Micro-XRCE-DDS-Agent.git cd Micro-XRCE-DDS-Agent mkdir build cd build cmake .. make sudo make install sudo ldconfig /usr/local/lib/
If you get an error relating to "ASIO_INCLUDE_DIR" when running "make", install this package:
sudo apt-get install libasio-dev
-
Start the DDS agent.
MicroXRCEAgent udp4 -p 8888
-
The PX4 SITL contains the DDS client. Run the SITL in a new window.
sudo make px4_sitl gazebo-classic
If you get a build error, check if you have any existing installations of ROS Noetic and delete them. After it successfully builds, you should see the simulation environment in one window and the DDS agent outputting "INFO" messages in its terminal window.
-
Create a ROS 2 workspace and name it whatever you want. This is where all you develop in.
mkdir -p ros2_ws/src
-
Clone PX4's packages and our custom messages into your ROS 2 workspace and compile it.
cd ros2_ws/src git clone https://github.com/PX4/px4_msgs.git git clone [email protected]:uci-uav-forge/uavf_ros2_msgs.git git clone [email protected]:uci-uav-forge/uavf_2024.git cd .. source /opt/ros/foxy/setup.bash
Everytime you make a change to your workspace, rebuild with this command:
colcon build --merge-install
If you compile with only "colcon build", you will get import errors with your ROS message types.
-
Run this command after everytime you've built the workspace:
source install/setup.bash
-
Test it out with an example
ros2 run uavf_2024 commander_node.py