{"id":363,"date":"2024-05-02T14:41:30","date_gmt":"2024-05-02T19:41:30","guid":{"rendered":"https:\/\/mrsdprojects.ri.cmu.edu\/2024teamf\/?page_id=363"},"modified":"2024-12-22T21:22:03","modified_gmt":"2024-12-23T02:22:03","slug":"software","status":"publish","type":"page","link":"https:\/\/mrsdprojects.ri.cmu.edu\/2024teamf\/documents\/software\/","title":{"rendered":"Software"},"content":{"rendered":"\n<p>The section below provides details of how to prepare and demonstrate our system on your own setup. It will go over the software requirements, and purposes of each bash scripts. A public Github repo [<a href=\"https:\/\/github.com\/ZAAPP-weeding\/utils\/tree\/main\">link<\/a>] contains the files that this section mentions. <\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Prerequisites <\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ubuntu 22.04<\/li>\n\n\n\n<li>ROS2 humble DISTRO<\/li>\n\n\n\n<li>Git and tmux installed<\/li>\n\n\n\n<li>sudo level access to the system<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Installation<\/h2>\n\n\n\n<p>Installation can be done via the\u00a0<code>install.bash<\/code>\u00a0script. The script will setup an venv with following packages installed<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>numpy <\/li>\n\n\n\n<li>torch <\/li>\n\n\n\n<li>torchvision <\/li>\n\n\n\n<li>opencv-python <\/li>\n\n\n\n<li>scipy <\/li>\n\n\n\n<li>tqdm <\/li>\n\n\n\n<li>ultralytics<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Execution<\/h2>\n\n\n\n<p>To launch the proper ROS2 nodes, a bash script is a convenient tool for starting all the necessary nodes. By running<\/p>\n\n\n\n<p><code>bash zaapp\/scripts\/launch.bash<\/code><\/p>\n\n\n\n<p>following nodes are launched, each opening their own window:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Husky Node<\/li>\n\n\n\n<li>Core Node<\/li>\n\n\n\n<li>Control Node<\/li>\n\n\n\n<li>Behavior Node<\/li>\n<\/ul>\n\n\n\n<p>All four Nodes above are crucial components for demonstrating ZAAPP weeding robot. <\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Husky Node<\/h3>\n\n\n\n<p>The Husky Node resides in the <code>husky<\/code> window, which contains four panes. Each pane launches a third party ROS2 node. For debugging purposes, you can launch individual Node with their corresponding commands. <\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Base Node<\/strong>:\n<ul class=\"wp-block-list\">\n<li><strong>Command<\/strong>:&nbsp;<code>ros2 launch husky_base base_launch.py<\/code><\/li>\n\n\n\n<li><strong>Description<\/strong>: Launches the base configuration for the Husky robot.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Teleoperation Node<\/strong>:\n<ul class=\"wp-block-list\">\n<li><strong>Command<\/strong>:&nbsp;<code>ros2 launch husky_control teleop_launch.py<\/code><\/li>\n\n\n\n<li><strong>Description<\/strong>: Launches the teleoperation control for the Husky robot, allowing joystick\/keyboard control. <\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Driver Node<\/strong>:\n<ul class=\"wp-block-list\">\n<li><strong>Command<\/strong>:&nbsp;<code>ros2 launch robot_bringup drivers_hack.launch.py<\/code><\/li>\n\n\n\n<li><strong>Description<\/strong>: Brings up the LiDAR&#8217;s drivers.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Localization Node<\/strong>:\n<ul class=\"wp-block-list\">\n<li><strong>Command<\/strong>:&nbsp;<code>ros2 launch robot_bringup localization.launch.py<\/code><\/li>\n\n\n\n<li><strong>Description<\/strong>: Launches FASTLIO localization for the robot.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Core Node<\/h3>\n\n\n\n<p>The Core Node resides in the <code>core<\/code> window, which contains four panes. For debugging purposes, you can launch individual Node with their corresponding commands.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Weed Detection Node<\/strong>:\n<ul class=\"wp-block-list\">\n<li><strong>Command<\/strong>:&nbsp;<code>ros2 run downward_facing_camera weed_detection_node<\/code><\/li>\n\n\n\n<li><strong>Description<\/strong>: Processes data from the downward-facing camera for weed detection.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Weed Map Node<\/strong>:\n<ul class=\"wp-block-list\">\n<li><strong>Command<\/strong>:&nbsp;<code>ros2 run forward_facing_camera weed_map_node<\/code><\/li>\n\n\n\n<li><strong>Description<\/strong>: Processes data from the forward-facing camera to generate a weed map.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Manipulator Node<\/strong>:\n<ul class=\"wp-block-list\">\n<li><strong>Command<\/strong>:&nbsp;<code>ros2 run manipulator_ros manipulator_node<\/code><\/li>\n\n\n\n<li><strong>Description<\/strong>: Controls the robot&#8217;s 2-DOF manipulator. Also controls the laser module.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Odom2World Node<\/strong>:\n<ul class=\"wp-block-list\">\n<li><strong>Command<\/strong>:&nbsp;<code>ros2 run odom2world odom2world<\/code><\/li>\n\n\n\n<li><strong>Description<\/strong>: Converts odometry data to a predefined world frame.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Control Node<\/h3>\n\n\n\n<p>The Control Node resides in <code>control<\/code> window, which contains two panes. For debugging purposes, you can launch individual Node with their corresponding commands.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Trajectory Generator Node<\/strong>:\n<ul class=\"wp-block-list\">\n<li><strong>Command<\/strong>:&nbsp;<code>ros2 run behavior trajectory_generator_node<\/code><\/li>\n\n\n\n<li><strong>Description<\/strong>: Generates dynamic trajectories for the robot to follow.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Controller Node<\/strong>:\n<ul class=\"wp-block-list\">\n<li><strong>Command<\/strong>:&nbsp;<code>ros2 run behavior controller_node<\/code><\/li>\n\n\n\n<li><strong>Description<\/strong>: Controls the robot&#8217;s movements based on generated trajectories.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Behavior Node<\/h3>\n\n\n\n<p>The Behavior Node resides in <code>behavior<\/code> window, which contains two panes. For debugging purposes, you can launch individual Node with their corresponding commands.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Visual Servoing Node<\/strong>:\n<ul class=\"wp-block-list\">\n<li><strong>Command<\/strong>:&nbsp;<code>ros2 run visual_servoing visual_servoing_server<\/code><\/li>\n\n\n\n<li><strong>Description<\/strong>: Enables visual servoing to guide the robot using visual inputs. Refines laser aiming to each detected weed. <\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Aladeen Node<\/strong>:\n<ul class=\"wp-block-list\">\n<li><strong>Command<\/strong>:&nbsp;<code>ros2 run behavior aladeen_node --ros-args -p sentience:=0<\/code><\/li>\n\n\n\n<li><strong>Description<\/strong>: Highest level behavior planning. Orchestrates overall weeding process. <\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<p>You will also notice a <code>debug<\/code> window appears without launching any nodes. This window serves convenient debugging purposes. <\/p>\n\n\n\n<p>Please refer to <a href=\"https:\/\/mrsdprojects.ri.cmu.edu\/2024teamf\/system\/system-implementation\/\">System Implementation<\/a> for additional details of each Node, of which corresponds to various subsystems. <\/p>\n","protected":false},"excerpt":{"rendered":"<p>The section below provides details of how to prepare and demonstrate our system on your own setup. It will go over the software requirements, and purposes of each bash scripts. A public Github repo [link] contains the files that this [&hellip;]<\/p>\n","protected":false},"author":366,"featured_media":0,"parent":33,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-363","page","type-page","status-publish","hentry","clearfix"],"_links":{"self":[{"href":"https:\/\/mrsdprojects.ri.cmu.edu\/2024teamf\/wp-json\/wp\/v2\/pages\/363","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mrsdprojects.ri.cmu.edu\/2024teamf\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/mrsdprojects.ri.cmu.edu\/2024teamf\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/mrsdprojects.ri.cmu.edu\/2024teamf\/wp-json\/wp\/v2\/users\/366"}],"replies":[{"embeddable":true,"href":"https:\/\/mrsdprojects.ri.cmu.edu\/2024teamf\/wp-json\/wp\/v2\/comments?post=363"}],"version-history":[{"count":9,"href":"https:\/\/mrsdprojects.ri.cmu.edu\/2024teamf\/wp-json\/wp\/v2\/pages\/363\/revisions"}],"predecessor-version":[{"id":570,"href":"https:\/\/mrsdprojects.ri.cmu.edu\/2024teamf\/wp-json\/wp\/v2\/pages\/363\/revisions\/570"}],"up":[{"embeddable":true,"href":"https:\/\/mrsdprojects.ri.cmu.edu\/2024teamf\/wp-json\/wp\/v2\/pages\/33"}],"wp:attachment":[{"href":"https:\/\/mrsdprojects.ri.cmu.edu\/2024teamf\/wp-json\/wp\/v2\/media?parent=363"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}