Nextcloud is the open
source file sync and share software for everyone from
individuals to large enterprises and service providers. Nextcloud
provides a safe, secure and compliant file sync and share solution on
servers you control.
With Nextcloud you can share one or more folders on your PC, and sync
them with your Nextcloud server. Place files in your local
shared directories, and those files are immediately synced to the
server, and then to other PCs via the desktop client. Not near
a desktop client? No problem, simply log in with the web client and
manage your files there. The Android and iOS mobile apps allow
you to browse, download and upload photos and videos.
Whether using a mobile device, a workstation, or a web client, Nextcloud
provides the ability to put the right files in the right hands at the
right time on any device in one simple-to-use, secure, private and
GIFs are an average of 5-10 times larger than an efficiently encoded
MP4 video. This difference in size means that GIFs waste a large amount
of bandwidth and also load at a slower rate leading to a bad user
简评：之前的方法使用特征匹配 (feature-matching techniques)
This work notes that while it is challenging to directly specify the
details of what to do (precise mechanisms of human navigation), it is
straightforward to specify what not to do (violations of social norms).
Specifically, using deep reinforcement learning, this work develops a
time-efficient navigation policy that respects common social norms.
= SA (socially aware) + CADRL(collision avoidance with deep
This work extends the collision avoidance with deep reinforcement
learning framework (CADRL) to characterize and induce socially aware
behaviors in multiagent systems.
More sophisticated motion models have been proposed, which would
reason about the nearby pedestrians’ hidden intents to generate a set of
predicted paths. Subsequently, classical path planning algorithms would
be employed to generate a collision-free path for the robot.
Separating the navigation problem into disjoint prediction and
planning steps can lead to the freezing robot problem, in which the
robot fails to find any feasible action because the predicted paths
could mark a large portion of the space untraversable.
Learning-based approaches aim to develop a policy that emulates human
behaviors by matching feature statistics. In particular, Inverse
Reinforcement Learning (IRL) has been applied to learn a cost function
from human demonstration (teleoperation), and a probability distribution
over the set of joint trajectories with nearby pedestrians.
In short, existing works are mostly focused on modeling and
replicating the detailed mechanisms of social compliance, which remains
difficult to quantify due to the stochasticity in people’s
作者认为人类会遵循一系列简单的社交规范，比如从右侧通过(passing on the
Building on a recent paper, we characterize these properties in a
reinforcement learning framework, and show that human-like navigation
conventions emerge from solving a cooperative collision avoidance
Avoidance with Deep Reinforcement Learning
The unknown state-transition model takes into account the uncertainty
in the other agent’s motion due to its hidden intents.
optimal value function)，然后可以由值函数回溯得到最优策略(optimal
Solving the RL problem amounts to finding the optimal value function
that encodes an estimate of the expected time to goal.
A major challenge in finding the optimal value function is that the
joint state sjn is a continuous, high-dimensional vector, making it
impractical to discretize and enumerate the state space.
Recent advances in reinforcement learning address this issue by using
deep neural networks to represent value functions in high-dimensional
spaces, and have demonstrated human-level performance on various complex
MC: 到目前为止，作者是在介绍自己已有的研究，the collision avoidance
with deep reinforcement learning framework
Reciprocity implicitly encodes a model of the other agents’ behavior,
which is the key for enabling cooperation without explicit
communication. While no behavioral rules were imposed in the problem
formulation, CADRL policy exhibits certain navigation conventions.
Existing works have reported that human navigation (or teleoperation
of a robot) tends to be cooperative and time- efficient. This work notes
that these two properties are encoded in the CADRL formulation through
using the min-time reward function and the reciprocity assumption.
However, the cooperative behaviors emerging from a CADRL solution are
not consistent with human interpretation. The next section will address
this issue and present a method to induce behaviors that respect human
We first describe a strategy for shaping normative behaviors for a
two-agent system in the RL framework, and then generalize the method to
This work notes that social norms are one of the many ways to resolve
a symmetrical collision avoidance scenario. To induce a particular norm,
a small bias can be introduced in the RL training process in favor of
one set of behaviors over others.
The advantage of this approach is that violations of a particular
social norm are usually easy to specify; and this specification need not
be precise. This is because the addition of a penalty breaks the
symmetry in the collision avoidance problem, thereby favoring behaviors
respecting the desired social norm.
最后，训练的结果表明学到了和人类行为类似的策略，比如 left-handed and
As long as training converges, the penalty sets’ size does not have a
major effect on the learned policy. This is expected because the desired
behaviors are not in the penalty set.
Since training was solely performed on a two-agent system, it was
difficult to encode/induce higher order behaviors, such as accounting
for the relations between nearby agents. This work addresses this
problem by developing a method that allows for training on multiagent
To capture the multiagent system’s symmetrical structure, a neural
network with weight-sharing and max-pooling layers is employed,
> The trajectories are then turned into state-value pairs and
assimilated into the experience sets.
CADRL和SA-CADRL的训练区别 - Two experience sets are used to
distinguish between trajectories that reached the goals and those that
ended in a collision. - During the training process, trajectories
generated by SA-CADRL are reflected in the x-axis with probability. *
This procedure exploits symmetry in the problem to explore different
topologies more efficiently.
作者在网络训练时已经设置开关(a binary flag indicating whether the
other agent is real or virtual (details)，所以n-智能体的网络也可以用于p
An n-agent network can be used to generate trajectories for scenarios
with fewer agents.
Details (online performance and offline training)
The size and connections in the multiagent network are tuned to
obtain good performance (ensure convergence and produce time-efficient
paths) while achieving real-time performance.
Three copies of four-agent SA-CADRL policies were trained, one
without the norm inducing reward, one with the left-handed, and the
other with the right-handed.
The differential-drive vehicle is outfitted with a Lidar for
localization, three Intel Realsenses for free space detection, and four
webcams for pedestrian detection.
A hardware demonstration video can be found at here.
In a reinforcement learning framework, a pair of simulated agents
navigate around each other to learn a policy that respect human
navigation norms, such as passing on the right and overtaking on the
left in a right-handed system.
This approach is further generalized to multiagent (n > 2)
scenarios through the use of a symmetrical neural network
Moreover, SA-CADRL is implemented on robotic hardware, which enabled
fully autonomous navigation at human walking speed in a dynamic
environment with many pedestrians.
Consider the relationships between nearby pedestrians, such as a
group of people who walk together.
Sidewalks present a unique yet challenging environment in that the
navigable space combines elements of both roads and free indoor spaces.
Often sidewalk motion is restricted to two linear directions and the
resulting navigable space is limited, like on roads.
However, pedestrians generally do not walk in perfect queues.
Instead, people tend to walk in groups of variable sizes and speeds and
move along with a general self-organizing crowd flow.
Compared to autonomous road navigation, sidewalk navigation must also
account for stochastic human movement that necessitates dynamic obstacle
avoidance. Furthermore, certain social rules, such as walking in lanes
or affording more space in the direction of walking than in the
perpendicular direction, are rules that a robot should follow as
核心思路和目标：模仿人类的自然行为，包括沿路行走 (walking in
lanes)，避障 (avoiding collisions with other pedestrians or
obstacles)，路口等待 (waiting at intersections to cross)，不走入交通中
(not walking into
Filter Candidate Groups
过滤那些远离航路点的行人组。 > Filter out groups moving away from
> If this value is non-positive, discard Gi as a subgoal
Smart Group Selection
(the optimal group to
Once we have filtered out unsuitable groups, the algorithm selects
the optimal group to follow.
We intentionally select the closest person as a subgoal as attempting
to reach the average group position could lead to path planning through
pedestrians located between the average group position and the robot’s
方法核心思路和目标：使用 3D laser sensor 采集点云，然后利用 Random
Sample Consensus (RANSAC) 算法去识别马路沿。
We make use of contextual knowledge; sidewalks are normally
surrounded by streets and buildings or empty space. Our robot first
acquires a surrounding point cloud using a 3D laser sensor and filters
out points that are at the same height as or above the plane defined by
the robot wheel contacts.
Human-Aware Collision Avoidance
在 group surfing 和 curb following
中，使用已有的学习方法，Socially-Aware Collision Avoidance with Deep
Reinforcement Learning (SA-CADRL) 来作为避障算法。 > Socially-Aware
Collision Avoidance with Deep Reinforcement Learning (SA-CADRL), as the
collision avoidance component of our navigation stack. The collision
avoidance system navigates to a local subgoal generated by either the
group surfing or the curb following approach.
其中，引入社交奖励函数来鼓励社会行为。 The reinforcement training
process induces social awareness through social reward functions, which
give higher values to actions that follow social rules.
Static Obstacle Avoidance:
把静态障碍物作为静态的行人，仍然使用SA-CADRL算法来处理。 > We
also use SA-CADRL to avoid these static obstacles by adding “static
pedestrians” to the state vector.
DEMONSTRATION AND EXPERIMENTS For
仿真环境的构建：使用ROS和Gazebo仿真套件。 > We use the Robot
Operating System (ROS) and Gazebo simulator suite. To simulate
pedestrians, we use the Pedsim ROS library, which relies on the social
In evaluating our navigation system, our main goal was to show that
the system successfully navigates the robot to its final goal through a
socially-acceptable path. That is, the path that our robot takes to the
goal is similar to what a pedestrian would take to the same goal.
We tracked the path taken by the robot and the path taken by a
simulated pedestrian. We also tracked the shortest path that the robot
could take within the confines of the sidewalk.
an independent samples t-test
We use the PowerBot from Omron Adept Mobile Robots as our
differential drive mobile base. The robot is equipped with multiple
sensors: a Velodyne VLP-16 3D LiDAR sensor; a SICK LMS-200 2D laser
sensor; a RealSense RGB-D sensor, and GPS and IMU sensors. Our
PowerBot’s max speed is 0.8m/s. This limits its capacity of following
faster pedestrian groups.
待提高的地方： - For the group surfing component, one main area for
improvement is in the selection process of groups to imitate. -
Criteria: group velocity; group trajectory; group size - External
observers of the group surfing behaviour will be interviewed to gauge if
the imitation behaviour is socially acceptable. - For collision
avoidance, a more specialized technique would allow for more efficient
navigation. - We hope to decouple static collision avoidance from
dynamic collision avoidance. - For curb following, our approach only
works for sidewalks that limit directly to the street, ignoring common
tree belt, median, hellstrip, etc. Our future plan is to introduce
detection and recognition of these non-transitable areas and incorporate
them in our navigation module.
Recall that: > remove - remove is identical to install except that
packages are removed instead of installed. Note that removing a package
leaves its configuration files on the system. If a plus sign is appended
to the package name (with no intervening space), the identified package
will be installed instead of removed.
purge - purge is identical to remove except that packages are removed
and purged (any configuration files are deleted too). This of course,
does not apply to packages that hold configuration files inside the
user's home folder.
what sudo apt autoremove actually does? Whenever you install an
application (using apt-get), the system will also install the software
that this application depends on. It is common in Ubuntu/Linux that
applications share the same libraries. When you remove the appplication
the dependency will stay on your system. So apt-get autoremove will
remove those dependencies that were installed with applications and that
are no longer used by anything else on the system.
You can subsequently open Language Suppor to
double-check that Key board input method system has
change from ibus to fcitx, and you can change it manuallyif not. You can
ignore it and click the "Remind Me later" button if you are reminded
that "The language support is not installed completely".
Importantly, you must
reboot your system after that.
After that, you can download the deb package from the official
for Linux, or here (also official links) directly.
You can install it in Ubuntu Software by
double-clicking, shown as below.
Importantly, you must
reboot your system again.
You can open fcitx config tool after rebooting, as you can see below.
You should also see Sogou Pinyin in the lists. Unfortunately, if not,
you can add it by clicking the + mark, choose Sogou Pinyin and reboot
the system again.
Now, you should input Chinese characters at the same time. In other
words, you can use it as convenient in Windows system, like the
Shuangpin input method. Yeah, you can learn more detail about Shuangpin
to install rtags for vim in Ubuntu 18.04 / 如何在Ubuntu 18.04
This blog introduces how to install the best cross-reference tool, rtags, that I have ever
used in vim, step by step. I hope it helps.
Rtags is a
client/server application that indexes C/C++ code and keeps a persistent
file-based database of references, declarations, definitions,
symbolnames etc. It allows you to find symbols by name (including nested
class and namespace scope). Most importantly, it gives you proper
follow-symbol and find-references support.
First, you need clang, which is a compiler front end
for the C, C++, Objective-C and so on. It uses the LLVM compiler
infrastructure as its back end and has been part of the LLVM release
cycle since LLVM 2.6.
// Commands in Ubuntu terminal git clone --recursive https://github.com/Andersbakken/rtags.git cd rtags <-- in rtags directory cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=1 . make sudo make install
Thirdly, you should install vim-rtags in Vundle.vim. I think
it's the easiest way to install rtags plugin in vim. You need to add the
following line to .vimrc if you have installed Vundle, and then run
:PluginInstall in vim.
Plugin 'lyuts/vim-rtags' <-- install in vim
Finally, the last but essential step is that forcing
cmake to output compile_commands.json (like DCMAKE_EXPORT_COMPILE_COMMANDS)
and link it with rtags according to your project.
1 2 3
cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=1 [***] your_src_path rc -J your_build_folder_path <-- use compile_commands.json in your build folder rdm & <-- launch the rtags server
You should test your configuration at:
Q: Renew 失败，报错信息如下： > Attempting to renew cert
(www.xx.net) from /etc/letsencrypt/renewal/www.xx.net.conf produced an
unexpected error: 'ascii' codec can't decode byte 0xe8 in position 57:
ordinal not in range(128). Skipping.