Professional Documents
Culture Documents
Installation
Installation
1 Ubuntu
1.0.1 Add the ROS 2 apt repository
You will need to add the ROS 2 apt repositories to your system. To do so, first authorize our GPG
key with apt like this:
sudo apt update && sudo apt install curl gnupg2 lsb-release
cd ~/ros2_foxy
tar xf ~/Downloads/ros2-package-linux-x86_64.tar.bz2
rosdep update
1
1.0.5 Installing the python3 libraries
sudo apt install -y libpython3-dev python3-pip
ls
>>colcon-argcomplete.bash colcon-argcomplete.zsh
source /usr/share/colcon_argcomplete/hook/colcon-argcomplete.bash
mkdir ros2_ws
cd ros2_ws
mkdir src
colcon build
cd install
source local_setup.bash
source setup.bash
cd ros2_ws/src
2
[ ]: # my_first_node.py
#!/usr/bin/python3
import rclpy
from rclpy.node import Node
def main(args=None):
rclpy.init(args=args) #initialize ros2
print("---testing---")
node = Node("py_test") # create a Node
node.get_logger().info("Hello ROS2") # Print
rclpy.spin(node)
rclpy.shutdown()
if __name__ == "__main__":
main()
[ ]: # setup.py
# change or edit
entry_points={
'console_scripts': [
"py_node = my_py_pkg.my_first_node:main" #py_node is the executable
],
}
Run in terminal, but make sure that all the envirnment varialble are set
ros2 run my_py_pkg py_node
#!/usr/bin/env python3
import rclpy
from rclpy.node import Node
def main(args=None):
rclpy.init(args=args)
node = MyCustomNode() # MODIFY NAME
rclpy.spin(node)
rclpy.shutdown()
if __name__ == "__main__":
3
main()
[ ]: #!/usr/bin/python3
import rclpy
from rclpy.node import Node
class MyNode(Node):
def __init__(self) -> None:
super().__init__("py_test")
self.counter_ = 0
self.get_logger().info("Hello Wencome to ROS2") # Print
self.create_timer(0.5, self.timer_callback) #Time = 2Hz= 0.5 seconds
def timer_callback(self):
self.counter_ += 1
self.get_logger().info(f"Hello counter={self.counter_}") # Print
def main(args=None):
rclpy.init(args=args) #initialize ros2
print("---testing---")
node = MyNode() # create a Node
rclpy.spin(node)
rclpy.shutdown()
if __name__ == "__main__":
main()
#include "rclcpp/rclcpp.hpp"
rclcpp::spin(node);
rclcpp::shutdown(); //Shutdown ROS2
return 0;
}
1.0.6 OOP
#include "rclcpp/rclcpp.hpp"
4
using namespace std;
rclcpp::spin(node);
rclcpp::shutdown(); //Shutdown ROS2
return 0;
}
timer_ = this->create_wall_timer(std::chrono::seconds(1),
std::bind(&MyNode::timer_callback, this));
}
private:
void timer_callback()
{
counter_ += 1;
RCLCPP_INFO(this->get_logger(), "Hello %d", counter_);
}
rclcpp::TimerBase::SharedPtr timer_;
int counter_;
5
};
rclcpp::spin(node);
rclcpp::shutdown(); //Shutdown ROS2
return 0;
}
[ ]: