ros-nalgebra 0.0.2

ROS message converter for rosrust and nalgebra
Documentation
# ros-nalgebra

Generate code to convert `geometry_msgs` into nalgebra structs, for [rosrust](https://github.com/adnanademovic/rosrust).

## Pre-requirements & dependencies

* [ROS]https://ros.org
* [Rust]https://rust-lang.org
* [rosrust]https://github.com/adnanademovic/rosrust
* [nalgebra]https://nalgebra.org/

## How to use

### Easy usage: `ros_nalgebra::rosmsg_include!()`

Use `ros_nalgebra::rosmsg_include` instead of `rosrust::rosmsg_include` in your code.

```rust
use nalgebra as na;

mod msg {
    ros_nalgebra::rosmsg_include!(nav_msgs / Odometry);
}

fn main() {
    let mut odom_msg = msg::nav_msgs::Odometry::default();
    odom_msg.pose.pose.position.x = 1.0;
    odom_msg.pose.pose.position.y = -1.0;
    odom_msg.pose.pose.position.z = 2.0;
    odom_msg.pose.pose.orientation.x = 0.0;
    odom_msg.pose.pose.orientation.y = 0.0;
    odom_msg.pose.pose.orientation.z = 0.0;
    odom_msg.pose.pose.orientation.w = 1.0;

    // convert into nalgebra::Isometry<f64> by `from()`
    let pose = na::Isometry3::from(odom_msg.pose.pose);
    println!("{}", pose);

    let mut pose2 = pose.clone();
    pose2.translation.vector.x = -5.0;

    // convert into ROS msg using `into()`
    let pose_msg: msg::geometry_msgs::Pose = pose2.into();
    println!("{:?}", pose_msg);
}
```

#### Automatically defined messages by `ros_nalgebra::rosmsg_include!()`

Below messages are automatically included by ros_nalgebra::rosmsg_include!(). Do not include them in your code.

```rust
geometry_msgs/Point,
geometry_msgs/Pose,
geometry_msgs/Quaternion,
geometry_msgs/Transform,
geometry_msgs/Vector3,
```

## Other usage: `ros_nalgebra!() and ros_nalgebra_msg!()`

If some messages are included already (for example in other crate), you can use `ros_nalgebra_msg!()`. The arguments are the rust namespace of the `geometry_msgs` (example:`msg`) and the message type (example: `Pose` for `geometry_msgs/Pose`, `Point` for `geometry_msgs/Point`).

### Example

In `some_other_crate`,

```rust
mode msg {
  rosrust::rosmsg_include!(geometry_msgs/Point);
}
```

Then you can use `ros_nalgebra::ros_nlagebra_msg!()` in your crate.

```rust
// generate conversion code only for `geometry_msgs/Point` which is defined in `::some_other_crate::msg`.
ros_nalgebra::ros_nalgebra_msg!(::some_other_crate::msg, Point);
```

## Supported conversions

See lib.rs.

## TODO

Handle dependencies.