Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

Loading two PMD Pico Flexx into RVIZ with URDF

Hey all, I'm a newer ROS user still trying to get his feet on the ground.

I am trying to load two PMD Pico Flexx LiDARs into RVIZ, and it seems like the best way to load them in is to create a URDF with each sensor predefined, then use robot_state_publisher. I followed this tutorial to use a single Pico Flexx in RVIZ. I'm just trying to load one Pico Flexx into RVIZ using URDF and robot_state_publisher for now, then once that works out I will work on adding the other.

I'm currently stuck trying to tie the Pico Flexx in the URDF (which I was able to load into RVIZ) with the driver provided in the above tutorial.

I was able to create a basic URDF after following the tutorials.

<?xml version="1.0"?>
<robot name="multipleshapes">
  <link name="base_link">
    <visual>
      <geometry>
        <cylinder length="0.1" radius="0.2"/>
      </geometry>
    </visual>
  </link>

<link name="pico_de_gallo">  
  <visual>
    <origin xyz="0.0 0.2 0" rpy="0 0 30" />
    <geometry>
      <box size="0.01 0.05 0.03" />
    </geometry>
    <material name="Blue" />
  </visual>
</link>

<joint name="pico_depth_joint" type="fixed">
  <origin xyz="0.0 0.2 0" rpy="0 0 30" />
  <parent link="base_link" />
  <child link="pico_de_gallo" />
</joint>

</robot>

I edited the tutorial URDF launch file to load the model into RVIZ, as shown below.

<launch>

  <arg name="model" default="$(find royale_in_ros)/urdf/model_1.urdf"/>
  <arg name="gui" default="true" />
  <arg name="rvizconfig" default="$(find royale_in_ros)/rviz/urdf.rviz" />

  <param name="robot_description" command="$(find xacro)/xacro.py $(arg model)" />
  <param name="use_gui" value="$(arg gui)"/>

  <node name="joint_state_publisher" pkg="joint_state_publisher" type="joint_state_publisher" />
  <node name="robot_state_publisher" pkg="robot_state_publisher" type="state_publisher" />
  <node name="rviz" pkg="rviz" type="rviz" args="-d $(arg rvizconfig)" required="true" />

</launch>

And I was planning on including the launch file provided in the PMD tutorial, which runs the Pico Flexx driver. I removed the static_tf portion, since I was able to determine orientation in the URDF. The launch file is shown below.

<launch>
  <!-- node name: all topics will be advertised under this name -->
  <arg name = "node_name"          default = "royale_camera"/>

  <!-- nodelet manager -->
  <node pkg = "nodelet" type = "nodelet" name = "$(arg node_name)" args = "manager" output = "screen"/>

  <!-- camera_driver nodelet -->
  <node pkg = "nodelet" type = "nodelet" name = "$(arg node_name)_driver"
        args = "load royale_in_ros/royale_nodelet $(arg node_name)"
        respawn = "true" output = "screen">
    <param name = "node_name"          type = "str"    value = "$(arg node_name)"/>
  </node>
</launch>

I'm trying to figure out how to define the Pico Flexx joint in the URDF with the camera driver launch file, or at least its contents. I can't seem to find any resources to join the two. Would anyone possibly know how to accomplish this? Or is the only way for me to move forward by me creating my own node to publish the pointclouds?

Thank you in advance.

Loading two PMD Pico Flexx into RVIZ with URDF

Hey all, I'm a newer ROS user still trying to get his feet on the ground.

I am trying to load two PMD Pico Flexx LiDARs into RVIZ, and it seems like the best way to load them in is to create a URDF with each sensor predefined, then use robot_state_publisher. I followed this tutorial to use a single Pico Flexx in RVIZ. I'm just trying to load one Pico Flexx into RVIZ using URDF and robot_state_publisher for now, then once that works out I will work on adding the other.

I'm currently stuck trying to tie the Pico Flexx in the URDF (which I was able to load into RVIZ) with the driver provided in the above tutorial.

I was able to create a basic URDF after following the tutorials.

<?xml version="1.0"?>
<robot name="multipleshapes">
  <link name="base_link">
    <visual>
      <geometry>
        <cylinder length="0.1" radius="0.2"/>
      </geometry>
    </visual>
  </link>

<link name="pico_de_gallo">  
  <visual>
    <origin xyz="0.0 0.2 0" rpy="0 0 30" />
    <geometry>
      <box size="0.01 0.05 0.03" />
    </geometry>
    <material name="Blue" />
  </visual>
</link>

<joint name="pico_depth_joint" type="fixed">
  <origin xyz="0.0 0.2 0" rpy="0 0 30" />
  <parent link="base_link" />
  <child link="pico_de_gallo" />
</joint>

</robot>

I edited the tutorial URDF launch file to load the model into RVIZ, as shown below.

<launch>

  <arg name="model" default="$(find royale_in_ros)/urdf/model_1.urdf"/>
  <arg name="gui" default="true" />
  <arg name="rvizconfig" default="$(find royale_in_ros)/rviz/urdf.rviz" />

  <param name="robot_description" command="$(find xacro)/xacro.py $(arg model)" />
  <param name="use_gui" value="$(arg gui)"/>

  <node name="joint_state_publisher" pkg="joint_state_publisher" type="joint_state_publisher" />
  <node name="robot_state_publisher" pkg="robot_state_publisher" type="state_publisher" />
  <node name="rviz" pkg="rviz" type="rviz" args="-d $(arg rvizconfig)" required="true" />

</launch>

And I was planning on including the launch file provided in the PMD tutorial, which runs the Pico Flexx driver. I removed the static_tf portion, since I was able to determine orientation in the URDF. The launch file is shown below.

<launch>
  <!-- node name: all topics will be advertised under this name -->
  <arg name = "node_name"          default = "royale_camera"/>

  <!-- nodelet manager -->
  <node pkg = "nodelet" type = "nodelet" name = "$(arg node_name)" args = "manager" output = "screen"/>

  <!-- camera_driver nodelet -->
  <node pkg = "nodelet" type = "nodelet" name = "$(arg node_name)_driver"
        args = "load royale_in_ros/royale_nodelet $(arg node_name)"
        respawn = "true" output = "screen">
    <param name = "node_name"          type = "str"    value = "$(arg node_name)"/>
  </node>
</launch>

I'm trying to figure out how to define the Pico Flexx joint in the URDF with the camera driver launch file, or at least its contents. I can't seem to find any resources to join the two. Would anyone possibly know how to accomplish this? Or is the only way for me to move forward by me creating my own node to publish the pointclouds?

Thank you in advance.


Edit #1

I was following Martin Gunther's advice, but I received the below catkin_make error on step 6 of the pico_flexx_driver installation walkthrough.

-- +++ processing catkin package: 'pico_flexx_driver' -- ==> add_subdirectory(pico_flexx_driver) no SDKs found! CMake Error at /usr/share/cmake-3.10/Modules/FindPackageHandleStandardArgs.cmake:137 (message): Could not find royale SDK! please make sure to extract the royale SDK to ~/catkin_ws/src/pico_flexx_driver/royale/ (missing: royale_LIB_DIR royale_LIBRARIES royale_INCLUDE_DIRS) Call Stack (most recent call first): /usr/share/cmake-3.10/Modules/FindPackageHandleStandardArgs.cmake:378 (_FPHSA_FAILURE_MESSAGE) pico_flexx_driver/cmake/Findroyale.cmake:26 (FIND_PACKAGE_HANDLE_STANDARD_ARGS) pico_flexx_driver/CMakeLists.txt:43 (find_package)

I extracted the SDK into the "royale" folder, but it doesn't seem to contain any sort of "libraries" folder. I'm not too sure what I'm missing. Could someone please point me in the right direction?

Thank you very much!

Loading two PMD Pico Flexx into RVIZ with URDF

Hey all, I'm a newer ROS user still trying to get his feet on the ground.

I am trying to load two PMD Pico Flexx LiDARs into RVIZ, and it seems like the best way to load them in is to create a URDF with each sensor predefined, then use robot_state_publisher. I followed this tutorial to use a single Pico Flexx in RVIZ. I'm just trying to load one Pico Flexx into RVIZ using URDF and robot_state_publisher for now, then once that works out I will work on adding the other.

I'm currently stuck trying to tie the Pico Flexx in the URDF (which I was able to load into RVIZ) with the driver provided in the above tutorial.

I was able to create a basic URDF after following the tutorials.

<?xml version="1.0"?>
<robot name="multipleshapes">
  <link name="base_link">
    <visual>
      <geometry>
        <cylinder length="0.1" radius="0.2"/>
      </geometry>
    </visual>
  </link>

<link name="pico_de_gallo">  
  <visual>
    <origin xyz="0.0 0.2 0" rpy="0 0 30" />
    <geometry>
      <box size="0.01 0.05 0.03" />
    </geometry>
    <material name="Blue" />
  </visual>
</link>

<joint name="pico_depth_joint" type="fixed">
  <origin xyz="0.0 0.2 0" rpy="0 0 30" />
  <parent link="base_link" />
  <child link="pico_de_gallo" />
</joint>

</robot>

I edited the tutorial URDF launch file to load the model into RVIZ, as shown below.

<launch>

  <arg name="model" default="$(find royale_in_ros)/urdf/model_1.urdf"/>
  <arg name="gui" default="true" />
  <arg name="rvizconfig" default="$(find royale_in_ros)/rviz/urdf.rviz" />

  <param name="robot_description" command="$(find xacro)/xacro.py $(arg model)" />
  <param name="use_gui" value="$(arg gui)"/>

  <node name="joint_state_publisher" pkg="joint_state_publisher" type="joint_state_publisher" />
  <node name="robot_state_publisher" pkg="robot_state_publisher" type="state_publisher" />
  <node name="rviz" pkg="rviz" type="rviz" args="-d $(arg rvizconfig)" required="true" />

</launch>

And I was planning on including the launch file provided in the PMD tutorial, which runs the Pico Flexx driver. I removed the static_tf portion, since I was able to determine orientation in the URDF. The launch file is shown below.

<launch>
  <!-- node name: all topics will be advertised under this name -->
  <arg name = "node_name"          default = "royale_camera"/>

  <!-- nodelet manager -->
  <node pkg = "nodelet" type = "nodelet" name = "$(arg node_name)" args = "manager" output = "screen"/>

  <!-- camera_driver nodelet -->
  <node pkg = "nodelet" type = "nodelet" name = "$(arg node_name)_driver"
        args = "load royale_in_ros/royale_nodelet $(arg node_name)"
        respawn = "true" output = "screen">
    <param name = "node_name"          type = "str"    value = "$(arg node_name)"/>
  </node>
</launch>

I'm trying to figure out how to define the Pico Flexx joint in the URDF with the camera driver launch file, or at least its contents. I can't seem to find any resources to join the two. Would anyone possibly know how to accomplish this? Or is the only way for me to move forward by me creating my own node to publish the pointclouds?

Thank you in advance.


Edit #1

I was following Martin Gunther's advice, but I received the below catkin_make error on step 6 of the pico_flexx_driver installation walkthrough.

-- +++ processing catkin package: 'pico_flexx_driver' -- ==> add_subdirectory(pico_flexx_driver) no SDKs found! CMake Error at /usr/share/cmake-3.10/Modules/FindPackageHandleStandardArgs.cmake:137 (message): Could not find royale SDK! please make sure to extract the royale SDK to ~/catkin_ws/src/pico_flexx_driver/royale/ (missing: royale_LIB_DIR royale_LIBRARIES royale_INCLUDE_DIRS) Call Stack (most recent call first): /usr/share/cmake-3.10/Modules/FindPackageHandleStandardArgs.cmake:378 (_FPHSA_FAILURE_MESSAGE) pico_flexx_driver/cmake/Findroyale.cmake:26 (FIND_PACKAGE_HANDLE_STANDARD_ARGS) pico_flexx_driver/CMakeLists.txt:43 (find_package)

I extracted the SDK into the "royale" folder, but it doesn't seem to contain any sort of "libraries" folder. I'm not too sure what I'm missing. Could someone please point me in the right direction?

Thank you very much!