Skip to content

Commit

Permalink
[sensors] Launch vectornav in bringup.launch.py (#229)
Browse files Browse the repository at this point in the history
* imu node

* fix submodule

* added angular velocity and linear acceleration

* change topic

* edited launch file

* Launch file fully functional now

* removed the build, install and log files from the src folder

* removed redundant line

* removed imu parser, removed unncessary enu file

* Fixed linting errors

* bugfixes on launch file

* final merge fixes

---------

Signed-off-by: David Calderon <[email protected]>
Co-authored-by: davidcalderon03 <[email protected]>
Co-authored-by: Mrinal Jain <[email protected]>
  • Loading branch information
3 people authored Nov 24, 2024
1 parent 0675e51 commit efb99ed
Show file tree
Hide file tree
Showing 6 changed files with 88 additions and 29 deletions.
4 changes: 4 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
Expand Up @@ -21,3 +21,7 @@
path = external/articubot_one
url = https://github.com/joshnewans/articubot_one.git
branch = humble
[submodule "external/vectornav"]
path = external/vectornav
url = https://github.com/dawonn/vectornav.git
branch = ros2
62 changes: 62 additions & 0 deletions documents/installation/vectornav_imu.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
# Launch Instructions for VectorNav with Permission Issues

This document explains how to resolve permission issues for serial devices (like `/dev/ttyUSB0`) and launch the VectorNav package on Linux.

## Prerequisites

1. **Install Necessary Packages**: Ensure all required packages are installed in your workspace and that the workspace is correctly sourced.

2. **Device Permissions**: You’ll need permission to access the device files (e.g., `/dev/ttyUSB0`).

## Steps

### Step 1: Check Device Permissions

1. First, identify the device port:
```bash
ls /dev/ttyUSB*
```
2. Verify your user has permission to access the device. If you see an error or permission denied, proceed with the steps below.

### Step 2: Add User to the `dialout` Group

The `dialout` group typically has access to serial devices. Add your user to this group:

```bash
sudo usermod -aG dialout $USER
```

**Note**: Log out and log back in for the group change to take effect. Alternatively, you can restart the system to apply these changes immediately.

### Step 3: Verify Permissions

After re-logging or rebooting, check that you have read and write permissions on the device:

```bash
ls -l /dev/ttyUSB0
```

If permissions are set correctly, the output should show that `dialout` has `rw` (read/write) access for `/dev/ttyUSB0`.

### Step 4: Launch VectorNav

Source your ROS workspace, then launch the VectorNav nodes with the appropriate configurations:

```bash
source ~/Documents/urc/rover-colcon/install/setup.bash
ros2 launch vectornav vectornav.launch.py
```

**Note**: Replace the workspace path with the correct path if it’s different on your system.

### Troubleshooting

If you continue to experience issues with permissions, consider checking `dmesg` logs to ensure the device is recognized:

```bash
dmesg | grep ttyUSB
```

This command shows messages related to the USB connection and may help diagnose connectivity issues.

---
1 change: 1 addition & 0 deletions external/vectornav
Submodule vectornav added at 2859fe
47 changes: 18 additions & 29 deletions urc_bringup/launch/bringup.launch.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,8 @@ def generate_launch_description():
)
pkg_urc_platform = get_package_share_directory("urc_platform")

pkg_vectornav = get_package_share_directory("vectornav")

controller_config_file_dir = os.path.join(
pkg_urc_bringup, "config", "controller_config.yaml"
)
Expand Down Expand Up @@ -67,7 +69,7 @@ def generate_launch_description():
load_joint_state_broadcaster = Node(
package="controller_manager",
executable="spawner",
arguments=["-p", controller_config_file_dir, "joint_state_broadcaster"],
arguments=["-p", controller_config_file_dir, "joint_state_broadcaster"]
)

load_drivetrain_controller = Node(
Expand All @@ -79,27 +81,9 @@ def generate_launch_description():
load_status_light_controller = Node(
package="controller_manager",
executable="spawner",
arguments=["-p", controller_config_file_dir, "status_light_controller"],
arguments=["-p", controller_config_file_dir, "status_light_controller"]
)

# load_arm_controller = Node(
# package="controller_manager",
# executable="spawner",
# arguments=["-p", controller_config_file_dir, "arm_controller"],
# )

# load_gripper_controller_left = Node(
# package="controller_manager",
# executable="spawner",
# arguments=["-p", controller_config_file_dir, "gripper_controller_left"],
# )

# load_gripper_controller_right = Node(
# package="controller_manager",
# executable="spawner",
# arguments=["-p", controller_config_file_dir, "gripper_controller_right"],
# )

twist_mux_node = Node(
package="urc_platform",
executable="urc_platform_TwistMux",
Expand All @@ -109,16 +93,22 @@ def generate_launch_description():
launch_gps = IncludeLaunchDescription(
PythonLaunchDescriptionSource(
os.path.join(
pkg_nmea_navsat_driver, "launch", "nmea_serial_driver.launch.py"
pkg_nmea_navsat_driver,
"launch", "nmea_serial_driver.launch.py"
)
)
)

launch_gps = Node(
package="nmea_navsat_driver",
executable="nmea_serial_driver",
output="screen",
parameters=[gps_config],
package='nmea_navsat_driver',
executable='nmea_serial_driver',
output='screen',
parameters=[gps_config])

launch_vectornav = IncludeLaunchDescription(
PythonLaunchDescriptionSource(
os.path.join(pkg_vectornav, "launch", "vectornav.launch.py")
)
)

rosbridge_server_node = Node(
Expand All @@ -138,7 +128,8 @@ def generate_launch_description():
)

odom_frame_node = Node(
package="urc_tf", executable="urc_tf_WorldFrameBroadcaster", output="screen"
package="urc_tf", executable="urc_tf_WorldFrameBroadcaster",
output="screen"
)

return LaunchDescription(
Expand All @@ -159,11 +150,9 @@ def generate_launch_description():
load_drivetrain_controller,
load_status_light_controller,
twist_mux_node,
# load_arm_controller,
# load_gripper_controller_left,
# load_gripper_controller_right,
launch_gps,
rosbridge_server_node,
odom_frame_node,
launch_vectornav,
]
)
2 changes: 2 additions & 0 deletions urc_platform/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ find_package(std_msgs REQUIRED)
find_package(sensor_msgs REQUIRED)
find_package(diagnostic_updater REQUIRED)
find_package(usb_cam REQUIRED)
find_package(vectornav_msgs REQUIRED)

include_directories(
include
Expand All @@ -29,6 +30,7 @@ set(dependencies
sensor_msgs
diagnostic_updater
usb_cam
vectornav_msgs
)

ament_target_dependencies(${PROJECT_NAME}
Expand Down
1 change: 1 addition & 0 deletions urc_platform/package.xml
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
<depend>usb_cam</depend>
<depend>image_transport</depend>
<depend>image_transport_plugins</depend>
<depend>vectornav_msgs</depend>

<test_depend>ament_lint_auto</test_depend>
<test_depend>ament_lint_common</test_depend>
Expand Down

0 comments on commit efb99ed

Please sign in to comment.